erase c++

来源:互联网 发布:苹果cms多功能手机模板 编辑:程序博客网 时间:2024/06/05 02:30
下面这个代码输出的是()
#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(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 300 300  300 500
100 3OO 300 300 500
100 300 300 500
100 300 500
100 500
程序错误
解析:
vector::erase():从指定容器删除指定位置的元素或某段范围内的元素 
vector::erase()方法有两种重载形式 
如下: 
iterator erase(   iterator _Where); 
iterator erase(   iterator _First,   iterator _Last); 
如果是删除指定位置的元素时: 
返回值是一个迭代器,指向删除元素下一个元素; 
如果是删除某范围内的元素时:返回值也表示一个迭代器,指向最后一个删除元素的下一个元素;

*itor==300成立时,删除第一个值为300的元素,同时itor指向下一个元素(即是第二个值为300的元素),然后执行itor++,下滑到下一个值
                             itor指向第三个值为300的元素,然后进入下一个循环删除第4行的300,然后跳到500,然后打印