学到STL的vector,发现手中的材料不是很详细,这里做个汇总。
1 操作
(1)头文件#include<vector>.
(2)创建vector对象,vector<int> vec; 注:这里应该是 vector<数据类型>对象;为通用形式,数据类型可以为一般的int ,long ,char ,string, double ,还可以为结构体等其他复杂数据类型。
(3)尾部插入数字:vec.push_back(a);
(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。
(5)使用迭代器访问元素.
vector<int>::iterator it; for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl;
(6)插入元素: vec.insert(vec.begin()+i,a);在第i个元素后面插入a;
(7)删除元素: vec.erase(vec.begin()+2);删除第3个元素 ; vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1]; 区间从0开始
(8)vec.pop_back() ; 删除最后一个数据。
(9)向量大小:vec.size(); v.resize(2*v.size)或 v.resize(2*v.size, 99) 将v的容量翻倍(并把新元素的值初始化为99)
(10)清空:vec.clear();
(11) vec[i]: 返回v中位置为n的元素 警告:必须是已存在的元素才能用下标操作符进行索引。通过下标操作进行赋值时,不会添加任何元素。仅能对确知已存在的元素进行下标操作
(12) vec.capacity(); 返回当前向量所能容纳的最大元素值。
(13) vec.max_size(); 返回最大可允许的vector元素个数。
(14) vect.swap(vector<T> & ); 交换两个同类型向量的数据。
(15) vect.assign(int n,const vector<T> & x); 设置向量中第n个元素的值为x.
(16) v1==v2; 判断v1与v2是否相等.
(17) vect.empty(); 判断是否为空。返回类型为bool.
注: vector可以实现动态增长的数组。如果题目中能使用C语言中的数组,尽量使用数组。因为向量空间如果不够,会重新分配空间,导致时间浪费。