解析:vector 使用erase之后 输出什么

#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


解析:

vector在erase之后,指向下一个元素的位置,其实进行erase操作时将后面所有元素都向前移动,迭代器位置没有移动。

itor=array.erase(itor)

erase返回下一个元素的地址,相当于给itor一个新值

猜你喜欢

转载自blog.csdn.net/sinat_36024346/article/details/80662949