对于下标操作符([]操作符)的使用有一点非常重要,就是仅能提取确实已存在的元素,例如:
vector<int>ivec;//empty vector
cout<<ivec[0];//Error: ivec has no elements!
vector<int>ivec2(10);//vector with 10 elements
cout<<ivec[10];//Error:ivec has elements 0...9
试图获取不存在的元素必然产生运行时错误。
附:常用方法
1.push_back() 在数组的最后添加一个数据
2.pop_back() 去掉数组的最后一个数据
3.at() 得到编号位置的数据
4.begin() 得到数组头的指针
5.end() 得到数组的最后一个单元+1的指针
6.front() 得到数组头的引用
7.back() 得到数组的最后一个单元的引用
8.max_size() 得到vector最大可以是多大
9.capacity() 当前vector分配的大小
10.size() 当前使用数据的大小
11.resize() 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve() 改变当前vecotr所分配空间的大小
13.erase() 删除指针指向的数据项
14.clear() 清空当前的vector
15.rbegin() 将vector反转后的开始指针返回(其实就是原来的end-1)
16.rend() 将vector反转构的结束指针返回(其实就是原来的begin-1)
17.empty() 判断vector是否为空
18.swap() 与另一个vector交换数据
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<int> v1;
int i;
for(i=1;i<12;i++)
{
v1.push_back(i);
}
for(vector<int>::iterator iter = v1.begin();iter < v1.end(); ++iter)
{
vector<int>::iterator iter_tmp;
iter_tmp = iter +1;
if(iter_tmp == v1.end())
{
cout <<"last one has no peer,value:"<<*iter <<endl;
}else
{
cout << "value:"<<*iter + *iter_tmp <<endl;
iter = iter_tmp;
}
}
cout<<"---"<<endl;
vector<int>::iterator iter = v1.begin(), iter_tail = v1.end()-1;
while(iter <= iter_tail)
{
if(iter != iter_tail)
cout<<"value:"<<*iter + *iter_tail <<endl;
else
cout <<"last one has no peer,value:"<<*iter<<endl;
iter++;
iter_tail--;
}
cout << endl;
}