layout: post
title: 侯捷STL学习(七)
date: 2017-06-13
tag: 侯捷STL

第十六节 深度探索vector

vector源码剖析

  • vector内存2倍扩充,是在另外的地方重新申请内存,将数据搬过去

  • 前闭后开区间
    侯捷STL学习(七)--深度探索vector&&array

  • 2倍扩充方法,reallocation

  • insert_aux函数中再次判断,原因是可能有其他放元素的操作如insert

侯捷STL学习(七)--深度探索vector&&array

  • 也要拷贝插入之后的数据,考虑到insert插入某个位置,红色框部分
    侯捷STL学习(七)--深度探索vector&&array

vector's iterator

  • vector结点是连续的,iterator不需要是类,是个指针即可。
  • 算法问的五种相关类型,通过iterator traits实现
  • 通过指针偏特化

侯捷STL学习(七)--深度探索vector&&array

G4.9 vetor and iterator

侯捷STL学习(七)--深度探索vector&&array

  • 变得复杂,但是追踪其根源和G2.9本质一样。

侯捷STL学习(七)--深度探索vector&&array

第十七节 深度探索array和forward list

容器array

  • TR1技术报告1 ,C++1.0-1998和c++2.0-2011之间的过渡版本
  • 源码很清晰,没有构造和析构函数;申明数组大小;用指针当迭代器
    侯捷STL学习(七)--深度探索vector&&array
  • G4.9变得复杂
    侯捷STL学习(七)--深度探索vector&&array

容器forward-list

侯捷STL学习(七)--深度探索vector&&array