vector的使用注意事项
示例1:
#include "iostream" #include "vector" using namespace std; int main(void) { vector<int>array; array.push_back(100); array.push_back(300); array.push_back(300); array.push_back(500); vector<int>::iterator itor; for(itor=array.begin();itor!=array.end();itor++) { if(*itor==300) { itor = array.erase(itor); } } for(itor=array.begin();itor!=array.end();itor++) { cout<<*itor<<" "; } return 0; }
输出结果为:100 300 500
为什么不是100 500呢?
原因如下:
vector erase以后,itor已经指向下一个元素了,不应该执行itor++,
否则会跳过下一个元素,即连续两个300时跳过了第二个300.
vector的初始化方式总结:
vector<T> v1;//v1是一个空vector,它潜在的元素是T类型的,执行默认初始化
vector<T>v2(v1);//v2中包含有v1所在元素的副本
vector<T>v2=v1;//等价于v2(v1),v2中包含v1所有元素的副本
vector<T>v3(n,val);//v3包含了n个重复的元素,每个元素的值都是val
vector<T>v4(n);//v4包含了n个0
vector<T>v5{a,b,c,...}//v5包含了初始值个数的元素,每个元素被赋予相应的初始值
vector<T>v5={a,b,c,...}//等价于v5{a,b,c..}