1. array 在 TR1 的实现
- TR1 是 1998 - 2003 之间的一个过渡版本
- array 区别于其他容器,它的模板参数要传入两个,第一个是数据类型。第二个是大小,因为 array 是数组,性质是不可扩充的
- array 没有构造函数和析构函数
- begin() 和 end() 就是头和尾,直接采用索引返回即可
- array 的 迭代器,array 是连续空间,所以它的迭代器可以是指针 ( G2.9 的 vector 也是用指针当作迭代器 ),所以 array 给算法提供 associated type 就要进入萃取器,然后走的是指针的偏特化
2. array 在 G4.9 的实现
- M_elems 的类型是 AT_Type : : Type,AT_Type 的类型是 array_traits,左下角就是 array_traits 的实现,可以看出 _Type 就是传入的模板参数 _Tp 这种数据类型的数组
-
- 根据上图,_Type 的别名采用的就是第三种方式
3. forward_list 在 G4.9 中的实现
- 参考双向链表
- 采用的也是虚拟头节点,impl 这个类中 有一个 _M_head,取begin() 的时候就是利用 取虚拟头节点的 next
- 因为 end() 是最后一个节点的下一个节点,所以应该传入 nullptr