本文介绍了如何从集合中删除所有偶数整数< int>在c ++的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是C ++的新手。
我有:
code> set< int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(4);
s.insert(5);
for(set< int> iterator itr = s.begin(); itr!= s.end(); ++ itr){
if(! 2))
s.erase(itr);
}
当然,它不工作。因为itr在它被擦除后递增。
这意味着Itr在每次从集合中删除元素后都必须指向集合的开头。
解决方案
pre> for(set< int> :: iterator itr = s.begin(); itr!= s.end();){
if(! 2))
s.erase(itr ++);
else ++ itr;
}
由Scott Myers生效的STL
I'm new to C++. I'd like to know how experienced coders do this.
what I have:
set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(4);
s.insert(5);
for(set<int>::iterator itr = s.begin(); itr != s.end(); ++itr){
if (!(*itr % 2))
s.erase(itr);
}
and of course, it doesn't work. because itr is incremented after it is erased.does it mean Itr has to point to the begin of the set everytime after i erase the element from the set?
解决方案
for(set<int>::iterator itr = s.begin(); itr != s.end(); ){
if (!(*itr % 2))
s.erase(itr++);
else ++itr;
}
effective STL by Scott Myers
这篇关于如何从集合中删除所有偶数整数< int>在c ++的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!