vector list map traverses instances where the enactment element is deleted to prevent the iterator from failing
- 2020-05-10 18:33:30
- OfStack
The method is as follows:
// k_control.cpp: defines the entry point for the console application.
//
#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++);
or
//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++);
or
//iter_list=list_my.erase(iter_list);
}else
iter_list++;
}
printf("run over");
return 0;
}