使用迭代器逆序遍历:
vector<int> v;
for(vector<int>::reverse_iterator it=v.rbegin();it!=v.rend();it++){
printf("%d ",*it);
}
map的迭代器不同于其他类型的迭代器,没有提供+运算符,因此对map的迭代器it使用it++等操作会出错,可以用下面的写法代替:
map<int,int> m;
map<int,int>::iterator it=m.begin();
std::advance(it,1);
在迭代中删除成员:如果删除了一个iterator所指向的内容,这个iterator就无效了,因此下面这种写法就会出错:
map<int,int> m;
map<int,int>::iterator it;
for(it=m.begin();it!=m.end();it++){
if(it->second==x)
m.erase(it);
}
可以将it自增写到循环中:
map<int,int> m;
map<int,int>::iterator it;
for(it=m.begin();it!=m.end();){
if(it->second==x)
m.erase(it++);
else
++it;
}