简单点来说vector就是一个模板类,而且是连续的(list不是连续的),删除中间的任意一个元素,后面的元素都需要往前移动,但对于数组来说,它可以扩容.
一、定义和初始化
vector<typename>v1(最大容量,初始值)
vetcor<typename> v1.push_back(i);//向v1的尾部插入i;
vector<typename>v1.;//默认v1为空,故不能赋值
vector<typename>v1(n,i);//将v1初始化为n个i
vector<typename>v2(v1);//将v1复制给v2
vector<typename>v2(n);//v2含有n个0的值
int a[4]={0,1,2,3,4]; vector<int>v1(a,a+4);//将数组a复制给vector
二、使用方法
vector<typename> v1;
v1.push_back(i);//将i添加到v1的最后
v1.size();//返回的是当前v1的数据总个数.
v1.resize(2*v1.size);//将v1的容量翻倍 v1.resize(2*size,99);//将v1的容量翻倍,并且将初始值设置为99
for(vector<int>::itertaor p=v1.begin();p!=v1.end();p++)
{ cout<<*p;//遍历了v1的所用元素
}
对于const vector<typename>v1 只能使用 const vector<typename>::iterator p 指针来进行遍历
v1.capacity() ;//用于获取当前v1最多能够存储的容量
v1.clear();//将v1清空
v1.erase(pointer1,pointer2);//将位于pointer1与pointer2中间的元素删除掉(包括pointer1)
v1.pop_back();//删除最后的元素
v1.insert(pointer1,n,i);//向pointer1后面插入n个i
v1.assign(n,elem);//将n个elem拷贝复制给v1
v1.back();//返回最后一个元素
v1.front();//返回第一个元素
v1.~vector<typename>销毁当前v1所有的元素并且清除所占的存储空间
三、实例
#include<iostream>
#include<vector>
#include<numeric>
using namespace std;
int main()
{
vector<int>v1;
for(int i=0;i<10;i++)
{
v1.push_back(i);
}
for(vector<int>::iterator p=v1.begin();p!=v1.end();p++)
{
cout<<*p;
cout<<endl;
}
cout<<accumulate(v1.begin(),v1.end(),0)<<endl;
cout<<"当前的内存容量"<<v1.capacity()<<endl;
return 0;
}
对于大量的数据的push_back操作来说,应该一开始就对其进行扩容,以此来避免之后的不断的扩容.因为每一次扩容都是开辟新的空间,然后在将原来的数据复制过去,这样是很耗时间的.