使用迭代器遍历容器
vector<struct SM> vec;
...
vector<struct SM>::iterator iter;
for(iter = vec.begin(); iter != vec.end(); iter++){
cout<<iter->id<<end;
}
for循环遍历容器
查找容器元素特定是否存在
int findID = 3;
vector<struct SM>::iterator iter;
for(iter = vec.begin(); iter != vec.end(); iter++){
if(iter->id == findID){
break;
}
}
if(iter == vec.end()){
cout<<"元素不存在"<<endl;
}else{
cout<<"元素存在"<<endl;
}
清空容器
或者
删除特定元素
使用erase删除迭代器指向的指定元素后,迭代器会失效,通常以下写法会导致程序崩溃
string qs = "aa";
vector<struct SM>::iterator iter;
for(iter = v->begin();iter!=v->end();iter++){
if(!iter->name.compare(qs)){
v->erase(iter);//iter 失效,下次循环会崩溃
}
}
}
正确写法
string qs = "aa";
vector<struct SM>::iterator iter;
for(iter = v->begin();iter!=v->end();){
if(!iter->name.compare(qs)){
iter = v->erase(iter);//使用erase返回的迭代器重新赋值iter
}else{
iter++;
}
}
或者