繁体   English   中英

在for_each期间从设置擦除C ++元素

C++ Erase element from set during for_each

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

只要不删除当前项,就在对集合进行for_each时从集合中删除元素是否合法?

设置擦除使所有迭代器保持有效,但被擦除的迭代器除外。

例如:

set<int> nums{0, 1, 2, 3, 4};

void weird_remove(int x) {
    int randnum = rand() % 5;
    if (randnum != x) {
        nums.erase(randnum);
    }
}

int main() {
    for_each(nums.begin(), nums.end(), weird_remove);
}

在循环范围内呢?

我认为答案适用于地图和地图集。

1 个回复

题:

只要不删除当前项目,就在对set进行for_eachset删除元素是否合法?

是的,这是合法的。

http://en.cppreference.com/w/cpp/container/set/erase

size_type erase( const key_type& key ); (3)

从容器中删除指定的元素。
3)删除所有具有键值键的元素。

对已删除元素的引用和迭代器无效。 其他引用和迭代器不受影响。

2 C ++中的for_each()

我已经在两台不同的机器上编译了我的代码,我认为它们具有相同的设置。 但是,一个编译没有问题,另一个给出以下错误。 相关代码: 任何想法可能是什么问题? TIA。 ...

3 for_each(for_each())?

这有效,for_each传递向量 函数f,它适用于for_each重新使用内部向量int 但for_each中的for_each 和整数的功能 才不是。 (如果我正确尝试的话,也没有绑定。)编译器说def函数不能应用正确的转换,即从向量分配器(向量的位置指针?) ...

5 访问for_each函数内的前一个元素

我正在尝试使用for_each在 C++17 中实现斐波那契数列 要访问函数内的前一个元素, prev不起作用。 如何访问函数内的前一个元素? 谢谢。 ...

6 在地图元素上使用for_each

我有一个地图,我想在每个数据类型对象成员函数上执行调用。 我还知道如何在任何序列上执行此操作但是,是否可以在关联容器上执行此操作? 我能找到的最接近的答案是: Boost.Bind访问std :: for_each中的std :: map元素 。 但是我不能在我的项目中使用boost, ...

7 使用 for_each 删除向量的元素

我有一个班级Student 。 它有一个int类型的成员nameCoef 。 每个Student对象都存储在一个 vector 中,它是Group类的成员。 如果nameCoef == 1我需要从向量中删除一个对象。 只能通过使用类Student成员函数getNameCoef()才能访问nameCo ...

2020-03-31 16:43:32 0 53   c++
8 如何在for_each中添加元素

我试图做一个有条件的添加 : 基本上,我有一个元素列表,使用这些元素,如果它们符合特定条件,我想创建它们的副本,对其进行一些修改,然后将其添加到同一列表中。 我不需要for_each来检查新添加的元素。 有什么办法可以使用stl做到这一点? ...

2014-04-14 05:14:08 1 159   c++/ stl
9 C ++ 11中的for_each函数

我有用5个数字填充的整数向量,我很好奇[&amp;idx]在做什么: 为什么它不这样工作? : 从性能的角度来看,这比它更好吗? : ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM