配接器(包括仿函数),萃取器、分配器、迭代器
来源:互联网 发布:java读取zip文件乱码 编辑:程序博客网 时间:2024/06/05 00:55
今天重读《STL源码分析》,一目十行,看的很爽,想起当年看这本书,看着脑袋就大。说明这些年,功力还是有所增长的。
STL的精髓,总结起来,就四点:配接器(包括仿函数),萃取器、分配器、迭代器。其中分配器和迭代器是常人能想出的产物,萃取器是高手想出的产物,配接器是大师想出的产物。
分配器需要记住的是,一般的内存分配器没有启用次级分配能力,只启用了一级分配器,即直接使用malloc和free来分配释放内存,STL为了提高效率,将分配内存和调用构造函数分开,为的是节省某些不需要调用构造函数的开销。次级分配能力在启用后,会根据分配内存的大小来决定是否使用内存池。
迭代器需要注意的地方,只有在其中使用的萃取器,这个萃取器的设计还是比较神妙的,迭代器作为一个类,在泛型算法中,怎样让编译器推导出返回值?普通的做法是使用typedef,但直接将迭代器传入的类型做typedef并不能解决泛型算法对裸指针的兼容。于是,萃取器出现了。
STL的精髓,总结起来,就四点:配接器(包括仿函数),萃取器、分配器、迭代器。其中分配器和迭代器是常人能想出的产物,萃取器是高手想出的产物,配接器是大师想出的产物。
分配器需要记住的是,一般的内存分配器没有启用次级分配能力,只启用了一级分配器,即直接使用malloc和free来分配释放内存,STL为了提高效率,将分配内存和调用构造函数分开,为的是节省某些不需要调用构造函数的开销。次级分配能力在启用后,会根据分配内存的大小来决定是否使用内存池。
迭代器需要注意的地方,只有在其中使用的萃取器,这个萃取器的设计还是比较神妙的,迭代器作为一个类,在泛型算法中,怎样让编译器推导出返回值?普通的做法是使用typedef,但直接将迭代器传入的类型做typedef并不能解决泛型算法对裸指针的兼容。于是,萃取器出现了。
- 配接器(包括仿函数),萃取器、分配器、迭代器
- 09_STL包括容器(containers)、迭代器(iterators)、空间配置器(allocator)、配接器(adapters)、算法(algorithms)、仿函数六个部分
- STL迭代器与类型萃取器
- STL源码解析之uninitialized_fill_n简单测试-(用到了迭代器萃取和型别萃取)
- 拷贝函数之类型萃取
- 类型萃取器__type_traits
- “类型萃取器”__type_traits
- STL源码(1)迭代器原理与萃取技术
- 迭代器萃取和反向迭代器
- 仿函数(functors)
- sgi stl 特性萃取器
- 【STL】类型萃取(TypeTraits)
- 仿函数与函数配接器
- 函数模板中使用类型萃取(traits)替换类型推导(deduce)
- 仿函数(函数对象)
- 圆形进度条(包括仿QQ图片加载进度图)
- 分配器与分支器
- STL知识点(常用算法函数介绍 、容器、类属算法、迭代器、函数对象、适配器、分配器
- c primer plus chapter6
- iterator_traits( 转)
- 大学毕业后拉开差距的真正原因 《毕业5年决定你的一生》
- 传智博客JAVA基础第八天
- C#respnse 跳转到指定frame
- 配接器(包括仿函数),萃取器、分配器、迭代器
- 磁盘配额(quota)
- Android得到控件在屏幕中的坐标
- 12864 C语言程序 带详细注解
- 《JavaWeb----利用dom4j解析xml文件》
- Linux线程-pthread_kill
- VxWorks下载程序
- 百度面试经历及总结
- HTML网页BODY中如何设置背景图拉伸的最有效方法