您的位置:首页 > 其它

vector list map 遍历删除制定元素 防止迭代器失效

2016-02-28 11:02 429 查看
// k_control.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include "stdio.h"

#include <vector>

#include <map>

#include <string>

#include <list>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

printf("run main");

vector<int> vect ;

vect.push_back(1);

vect.push_back(2);

vect.push_back(3);

vect.push_back(4);

vect.push_back(5);

vector<int>::iterator iter = vect.begin();

for(iter;iter!=vect.end();){

if(*iter == 3){

iter=vect.erase(iter);

}else{

iter++;

}

}

map<int,string> map_local ;

map_local[1]="hello_1";

map_local[2]="hello_2";

map_local[3]="hello_3";

map_local[4]="hello_4";

map_local[5]="hello_5";

map<int,string>::iterator iter_map=map_local.begin();

for(iter_map;iter_map!=map_local.end();){

if(iter_map->first==1){

map_local.erase(iter_map++);

或者

//iter_map=map_local.erase(iter_map);

}else{

iter_map++;

}

}

list<int> list_my;

list_my.push_back(1);

list_my.push_back(2);

list_my.push_back(3);

list_my.push_back(4);

list_my.push_back(5);

list<int>::iterator iter_list = list_my.begin();

for(iter_list;iter_list!=list_my.end();){

if(*iter_list==2){

list_my.erase(iter_list++);

或者

//iter_list=list_my.erase(iter_list);

}else

iter_list++;

}

printf("run over");

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: