vector容器概述
vector数据结构和数组非常相似,也称为单端数组。
vector与普通数组的区别:数组是静态空间,而vector可以动态拓展。
- 数组静态空间:数组在声明时即指定了大小。无法再改变。
- vector动态拓展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝到新空间中,释放原空间。
- 动态拓展机制:类似于C#种的ArrayList的Capacity拓展,当空间不足时,自动开辟。ArrayList会自动翻倍,但是vector不会翻倍,他会增加当前容量的一半。
vector<int> v1;
cout << "v1初始化的容量:" << v1.capacity() << endl;
for (int i = 0; i < 30; i++)
{
v1.push_back(i);
cout << "v1加入" << i << "之后的容量为:" << v1.capacity() << endl;
}
输出:
v1初始化的容量:0
v1加入0之后的容量为:1
v1加入1之后的容量为:2
v1加入2之后的容量为:3
v1加入3之后的容量为:4
v1加入4之后的容量为:6
v1加入5之后的容量为:6
v1加入6之后的容量为:9
v1加入7之后的容量为:9
v1加入8之后的容量为:9
v1加入9之后的容量为:13
v1加入10之后的容量为:13
v1加入11之后的容量为:13
v1加入12之后的容量为:13
v1加入13之后的容量为:19
v1加入14之后的容量为:19
v1加入15之后的容量为:19
v1加入16之后的容量为:19
v1加入17之后的容量为:19
v1加入18之后的容量为:19
v1加入19之后的容量为:28
v1加入20之后的容量为:28
v1加入21之后的容量为:28
v1加入22之后的容量为:28
v1加入23之后的容量为:28
v1加入24之后的容量为:28
v1加入25之后的容量为:28
v1加入26之后的容量为:28
v1加入27之后的容量为:28
v1加入28之后的容量为:42
v1加入29之后的容量为:42
容量扩增为当前容量的一半,1,2, 3,4, 6, 9, 13, 19, 28, 42。每次增加的都是前一刻的一半。

- vector通常,前端封闭,不允许前端插入,只允许尾插和尾删法。push_back()和pop_back()。
- front()代表容器中的第一个元素。back()是容器中最后一个元素。
- vector中有几个迭代器:
- 常用的是v.begin():代表的是容器中的第一个元素的位置(迭代器指向第一个元素)。
- v.end():指向容器中最后一个元素的下一个位置。
- v.rbegin():指向容器中的最后一个元素,也就是从右边数第一个元素。
- v.rend():指向第一个元素的前一个位置。从右侧数最后一个,即第一个。
- 还有其他接口,比如:插入insert()以及删除erase()等。
- vector容器的迭代器是支持随机访问的迭代器。最强悍的迭代器:跳跃式访问。
vector构造函数
函数原型:
- vector<T> v; &nbs

本文主要介绍了C++中vector容器的相关知识。它与数组相似但可动态拓展,前端封闭,迭代器支持随机访问。详细阐述了其构造函数、赋值操作、容量和大小、插入和删除、元素存取、互换元素及预留空间等功能及对应函数原型,还提及了内存压缩技巧。
最低0.47元/天 解锁文章
1362

被折叠的 条评论
为什么被折叠?



