使用C11新增的区间循环配合auto让容器迭代写起来更方便:
STL的容器可以分为三大类, 定义在同名头文件:
序列型容器: 数组或链表实现的列表, 数据组织紧凑
关联型容器: 红黑树实现的set和...STL有多种Traits, 对于迭代器使用的是iterator_traits.
Traits是典型的偏特化模板类, 其经由偏特化来处理类类型的迭代器, 原生指针类型的迭代器和常量指针类型的迭代器....容器: vector
vector的基础结构是双倍扩充的数组(实际扩充倍率依编译器决定, 有的编译器如的扩充倍率是1.5, 这个问题以后可能在另一篇文章一起细说), 通过如图的三个迭代器来进行尺寸控制...在早期实现中vector的迭代器只是一个原生指针, 但是后续实现给迭代器加入了状态机制, 将vector的迭代器正式扩展为一个类....容器: unordered
unordered类是在C11的时候从hash类改名过来的, 这一组容器都使用散列表实现, C++中使用了如上图的非开放式散列表来处理.