c++中vector容器的基本操作
程序员文章站
2022-03-22 22:17:10
...
什么是vector?
向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,简单的理解就是一个可以动态变化的数组。
vector的容量是随着你放入元素的数量而动态变化的。但是其只会增长而不是缩小
基本操作
在使用容器是要先写好头文件#include
构造容器
以int类型的为例子
void test01() {
vector<int> v1;//创建一个空容器
int arr[] = { 1,2,3,4,5,6,7,8 };
vector<int>v2(arr, arr + sizeof(arr) / sizeof(int));//创建一个容器用arr中的元素填充
vector<int>v3(v2.begin(), v2.end());//使用迭代器,用v2的区间当做新容器的元素。
vector<int>v4(v3);//拷贝构造函数,创建一个一模一样的容器
pr(v4);
}
常用的赋值操作
void test02() {
int arr[] = { 10,20,30,40 };
vector<int>v1(arr, arr + sizeof(arr) / sizeof(int));
vector<int>v2;
v2.assign(v1.begin(), v1.end());//拷贝
//重载
vector<int>v3;
v3 = v2;
int arr1[] = { 100,200,300,400 };
vector<int>v4(arr1, arr1 + sizeof(arr1) / sizeof(int));
v4.swap(v1);
pr(v4);
}
size与capacity
size是返回该容器中的元素个数,而capacity则是返回该容器的容量,他们的区别就好像是杯子的大小和杯中水的体积一样
void test03() {
int arr[] = { 1,2,3,4,5,6,7,8 };
vector<int>v2(arr, arr + sizeof(arr) / sizeof(int));
cout << v2.size();//元素个数 判断是否为空用empty
v2.resize(5);//改变容器内元素的个数,多余的会删除掉,如果比以前变大了默认添加0。不想用默认可以resize(10,想要的值),而且只能改变元素个数,并不能改变容器容量
v2.capacity();//返回容器的容量,与size不同的是size为容器里有多少元素,而capacity为容器的大小
vector<int>().swap(v2);//如果向缩小容量可以使用swap这种方法,让v2和匿名空间两者交换指针的指向,这种方法也相当于是释放了空间
v2.front();//返回容器中第一个元素
v2.back();//返回容器中最后一个元素 ,他们与begin和end不同的地方在于begin和end返回的是迭代器
}
插入和删除操作
void test04() {
vector<int>v;
v.push_back(10);
v.push_back(20);
//头插法 ,使用迭代器
v.insert(v.begin(), 30);
v.insert(v.end(), 40);
//删除
v.erase(v.begin());//单个删除,删除第一个位置
v.erase(v.begin(), v.end());//删除一个区间
v.clear();//清空
}
reserve和resize的区别
//reserve是预留空间的,如果一开始想好了容器的大小可以直接用reserve去定义。
遍历
void pr(vector<int>v) {
for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
cout << *it << endl;
}
}
vector的优点:
-
可以使用下标访问个别的元素
-
迭代器可以按照不同的方式遍历容器
-
可以在容器的末尾增加或删除元素