vector容器是最常见的STL容器,是一种顺序容器,它的数据在内存空间中是连续的。
常用函数:
push_back(),插入一个元素
clear(),清空元素
size(),返回元素的个数
[],支持下标运算,从0开始
resize()/reserver(),重新分配内存空间
capacity(),返回分配的内存空间
扩容:
因为数据在内存中要求连续存放,所以当空间不够时,需要分配一块更大的空间,然后把原先的数据移过来,一般是以原先空间的两倍扩容:
int main()
{
std::vector<int> vec;
for (int i = 0; i < 100; ++i) {
std::cout << vec.size() << " " << vec.capacity() << std::endl;
vec.push_back(i);
}
std::vector<int>().swap(vec);
std::cout << vec.capacity();
return 0;
}
迭代器失效:
当进行插入或者删除操作时,元素会往后移动或者往前移动,导致之前插入或者删除位置的迭代器失效,所以插入或者删除后需要用一个迭代器接收一下新的有效的迭代器。
实现:
vector容器实际上可以看做是一种动态数组,可以使用T*类型的指针来实现。
参考资料:
https://blog.youkuaiyun.com/yangshiziping/article/details/52550291
https://www.cnblogs.com/yahoo17/p/12706376.html
https://blog.youkuaiyun.com/zhuoya_/article/details/79660724
https://blog.youkuaiyun.com/lovehang99/article/details/88110582
https://www.cnblogs.com/qingjiaowoxiaoxioashou/p/5874572.html
https://www.cnblogs.com/cuphoria/p/9609619.html