《重学C++》9. C++进阶编程(二)迭代器、容器适配器、空间配置器
迭代器(iterator)
类似于关联容器,迭代器根据两个维度——指向的元素可变(const)和逆序——被分为四种迭代器。
- 正向迭代器 iterator
- 常量正向迭代器 const_iterator
- 反向迭代器 reverse_iterator
- 常量反向迭代器 const_reverse_iterator
容器对迭代器的支持:
容器 | 迭代器功能 |
---|---|
vector | 随机访问 |
deque | 随机访问 |
list | 双向访问 |
set/multiset | 双向访问 |
map/multimap | 双向访问 |
stack | 不支持迭代器 |
queue | 不支持迭代器 |
priority_queue | 不支持迭代器 |
容器适配器(adapter)
适配器包括三种:
- stack
LIFO,底层实现结构是deque; - queue
FIFO,底层实现结构是deque; - priority_queue
最大/最小堆(默认最大堆),自动在堆中进行堆排序,底层实现结构是vector或deque
使用很简单,push/push_back放入,top/front/back获取数据,pop/pop_front/pop_back删除数据。
官方文档
stack
http://www.cplusplus.com/reference/stack/stack/?kw=stack
queue
http://www.cplusplus.com/reference/queue/queue/?kw=queue
priority_queue
http://www.cplusplus.com/reference/queue/priority_queue/?kw=priority_queue
空间配置器(allocator)
空间配置器功能强大,负责为底层数据的存储提供服务,它不仅可以在内存上分配空间,甚至可以在硬盘上分配空间。
……这部分比较难,视频没看懂,后面有时间再研究。推荐这部分的经典书籍《STL源码剖析》。
- STK 的六大组件给软件编程带来了新的多态复用,是现代C++语言高效的精髓;
- 泛型和STL的学习路线很陡,建议初学者先学会基本使用和简单扩展;
- 掌握了一定基础的情况下,可以通过进一步学习和分析源码,编写自己的组件来提升能力;
trivial:内置类型
non_trivial:非内置类型
C++ STL 空间配置器
https://blog.csdn.net/lisemi/article/details/100894471
Boost库
Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发、维护,Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能,包括字符串和文本处理库、容器库、算法库、函数对象和高阶编程库、综合类库等等。
现在很多优秀的算法已经被放入C++11,不需要为了用Boost而专门去学。
学习C++有没有必要学习boost库?
https://www.zhihu.com/question/39817943