C++里vector::erase函数

来源:互联网 发布:华为大数据研发岗累吗 编辑:程序博客网 时间:2024/06/01 08:24
vector::erase():从指定容器删除指定位置的元素或某段范围内的元素 
vector::erase()方法有两种重载形式 
如下: 
iterator erase(   iterator _Where); 
iterator erase(   iterator _First,   iterator _Last); 
如果是删除指定位置的元素时: 
返回值是一个迭代器,指向删除元素下一个元素; 
如果是删除某范围内的元素时:返回值也表示一个迭代器,指向最后一个删除元素的下一个元素;
例子:
#include <iostream>       
#include <vector>
usingnamespacestd;
intmain(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<<"";
    }
  return0;
}
输出结果: 100 300 300 500
       在本题中,当 *itor==300成立时,删除第一个值为300的元素,同时itor指向下一个元素(即是第二个值为300的元素),
在for(;;itor++)执行itor,itor指向第三个值为300的元素,进入下一个循环
       进入循环满足*itor==300,重复上面的过程,执行完循环,itor执行值为500的元素。
       所有整个过程中,只删除了2个值为300的元素。