vector深度探索

声明:本文中所有图件都来自B站侯捷老师授课视频

vecctor 底层实现原理

vector深度探索
图1. GNU2.9 实现的容器vector

  • vector 的内存是动态增长的,vector 最重要的三个成员变量为 三个迭代器: start, finish, end_of_storage 。start 指向vector第一个元素, finish 指向最后一个元素的下一个地址,end_of_storage指向 vector 内存空间最后一个地址的下一个地址。vector对象 的大小 就是 这三个指针(vector的迭代器就是指针)的总大小,在32位的计算机上,一个指针的大小为4个字节,所以是12个字节。而 vector 的一些成员函数如图1,都是通过以上三个迭代器来实现的。
  • []操作符重载,所有容器,只要是连续内存空间,就会提供中括号 [] 来做元素访问。
内存增长机制 与 push_back
vector 的迭代器
  • vector 的迭代器就是指针,实际上内存空间连续的容器的迭代器都是指针。