如何从集合中删除所有偶数整数< int>在c ++ [英] how to remove all even integers from set<int> in c++

查看:150
本文介绍了如何从集合中删除所有偶数整数< 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

这篇关于如何从集合中删除所有偶数整数&lt; int&gt;在c ++的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆