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..}

posted @ 2018-10-05 12:02  cs_wu  阅读(447)  评论(0编辑  收藏  举报