C++中的标准库容器vector是一个类模板,可以根据想装入元素的具体类型来实例化一个vector容器,vector相当于一个动态数组,当你无法知道自己需要的数组规模具体要多大时,可以用它来解决问题,而且使用很方便。
1.文件包含、变量声明
#include <vector>
#include <iostream>
int main()
{
std::vector<int> a;
......
}
2.函数调用
1. push_back 在数组的最后添加一个数据
2. pop_back 去掉数组的最后一个数据
3. at 得到编号位置的数据
4. begin 得到数组头的指针
5. end 得到数组的最后一个单元+1的指针
6.front 得到数组头的引用
7. back 得到数组的最后一个单元的引用
8. max_size 得到vector最大可以是多大
9. capacity 当前vector分配的大小
10.size 当前使用数据的大小
11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve 改变当前vector所分配空间的大小
13.erase 删除指针指向的数据项
14.clear 清空当前的vector
15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)
16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)
17.empty 判断vector是否为空
18.swap 与另一个vector交换数据
3.内存管理与效率
(1) 使用reserve()函数提前设定容量大小,避免多次容量扩充操作导致效率低下。
STL容器最令人称赞的特性之一就是只要不超过它们的最大容量,它们就可以自动增长到足以容纳你放入的数据。(要知道这个最大值,只要调用名叫max_size的成员函数。)对于vector和string,如果需要更多空间,就以类似realloc的思想来扩充空间。vector容器支持随机访问,因此为了提高效率,它内部使用动态数组的方式实现的。在通过 reserve() 来申请特定大小的时候总是按指数边界来增大其内部缓冲区。当进行insert或push_back等增加元素的操作时