vector
初始化
vector<int> a ; //声明一个int型向量a
vector<int> a(10) ; //声明一个初始大小为10的向量
vector<int> a(10, 1) ; //声明一个初始大小为10且初始值都为1的向量
vector<int> b(a) ; //声明并用向量a初始化向量b
vector<int> b(a.begin(), a.begin()+3) ; //将a向量中从第0个到第2个(共3个)作为向量b的初始值
vector< vector<int> > b(10, vector<int>(5)); //创建一个10*5的int型二维向量
插入 - insert
a.insert(a.begin(), 1000); //将1000插入到向量a的起始位置前
a.insert(a.begin(), 3, 1000) ; //将1000分别插入到向量元素位置的0-2处(共3个元素)
vector<int> a(5, 1) ;
vector<int> b(10) ;
b.insert(b.begin(), a.begin(), a.end()) ; //将a.begin(), a.end()之间的全部元素插入到b.begin()前
删除 - erase,clear
a.erase(a.begin()) ; //将起始位置的元素删除
a.erase(a.begin(), a.begin()+3) ; //将(a.begin(), a.begin()+3)之间的元素删除
a.clear(); //移除a所有元素
赋值
vector<int> c.
c.assign(a.begin(),a.end()):将[beg; end)区间中的数据赋值给c
c.assign(n,elem):将n个elem的拷贝赋值给c
其他
a.empty(); //判断容器是否为空
a.front(); //传回第一个数据。
a.back(); //传回最后一个数据
a.pop_back(); //删除最后一个数据。
a.push_back(elem); //在尾部加入一个数据。
a.resize(num); //重新设置该容器的大小,如果它比当前使用的大,者填充默认值
a.reserve(); //改变当前vecotr所分配空间的大小,
a.size(); //回容器中实际数据的个数。
a.capacity(); //当前vector分配的大小
a.begin(); //返回指向容器第一个元素的迭代器
a.end(); //返回指向容器最后一个元素的迭代器
a.rbegin(); //将vector反转后的开始指针返回(其实就是原来的end-1)
a.rend(); //将vector反转后的结束指针返回(其实就是原来的begin-1)
a.at(i),a[i]; //返回第i个元素
总结
进行pop_back操作时,capacity并不会因为vector容器里的元素减少而有所下降,还会维持操作之前的大小。对于vector容器来说,如果有大量的数据需要进行push_back,应当使用reserve()函数提前设定其容量大小,否则会出现许多次容量扩充操作,导致效率低下。
vector以一块连续内存存放元素,对vector进行随机访问效率很高,但是对vector进行除末端以外位置的插入或者删除操作会缺乏效率。vector适合表示数列。