vector常见用法详解
vector是一个线性顺序结构,相当于数组,可以不预先指定数组的大小,
并且能够自动扩建。创建一个vector后,它会自动在内存中分配一块连续的
内存空间进行数据储存,这个大小即capacity()函数的返回值。当储存的数据
超过分配的空间时,vector会重新分配一块内存块,但这样的分配是很耗时的,
它要将原来的数据复制到新的内存块中,销毁掉原来内存块中的对象,最后将
原来的内存空间释放掉。
需要头文件#include以及using namespace std;
初始化:
vector<int> c1;
vector<int> c2(n);利用元素的default构造函数生成一个大小为n的vector
vector<int> c3(n,5);产生一个大小为n的vector,每个元素值都是5
vector<int> c4(c1);产生c1的副本
赋值:
for(int i=0;i<10;i++){
c1.push_back(i);
c2[i]=i;
}
vector元素个数:c1.size()
访问:
可以用下标访问:cout<<c1[5]<<endl;
或者用迭代器访问:
vector<int> ::iterator it1,it2;
it1=c1.begin();或者直接auto it1=c1.begin();
it2=c1.end();(--c1.end)才是最后元素地址
cout << *(it1+2) << endl;输出第3个元素
c1.assign(it1,it2);
将[it1,it2)区间(注意这里是左闭右开)中的数据赋值给c1
c1.erase(it1);删除it1位置的数据,返回下一个数据的位置
c1.erase(it1+t); 删除第t+1个元素
c1.erase(it1+i,it1+j);删除区间[it1+i,itq+j)的元素(左闭右开)
c1.clear();清空
c1.empty();若c1为空,返回值为1,否则为0
c1.capacity();当前已经分配的可以容纳的元素个数
c1.assign(5,6);将5个6赋值给c1
vector可以直接赋值:
vector<int> vec;
auto vec1=vec;
vector可以sort:
sort(vec.begin(),vec.end());