STL源码剖析——容器
文章目录 一.模板特化 二.设计容器必须定义的型别 三.deque 四.心心念念的优先队列 五.hashtable的构造 一.模板特化 针对任何模板参数更进一步的条件限制所设计出来的一个特化版本,如: template < typename T > class C { . . . } ; //泛化版本,可以接受T为任何型别 template < typename T > class C < T * > { . . . } ; //特化版本,仅适合于T为原生指针时的情况 二.设计容器必须定义的型别 value_type difference_type reference_type pointer_type iterator_category: 其中设计实现了只读/只写迭代器,允许写入型,可双向移动,随机访问迭代器这5类 总结 traits编程技法(特性萃取)大量的实现大大提高了STL设计的便利性。需要注意设计正确的型别是迭代器的职责,而设计正确的迭代器则属于容器的职责。 三.deque deque与vector的差别 deque除了可以像vector那样在尾部以O(1)的时间复杂度完成插入和删除之外,还可以实现在头部以O(1)的代价插入元素 deque没有所谓的容量的概念,这个和它底层的空间组织形式有关,所以不提供reserve成员函数来限定容量