【发布时间】:2020-10-20 08:41:39
【问题描述】:
我想循环遍历 multiset 或 unordered_set 中的每个元素,并且在循环期间,我可以插入和删除元素。 例如:
unordere_set<int> myset = { 1, 2, 3, 4 };
for (auto it = myset.begin(); it != myset.end(); ++it) {
myset.erase(*it);
// do something that needs to use the set without *it like in a recursion function that takes the reference of the set
myset.insert(*it);
}
我不想创建该集合的副本,因为该集合可能非常大而且效率不高。
【问题讨论】:
-
当你说 use the set without *it 你的意思是下面的代码不会使用
it或者你希望在没有那个特定的情况下对set进行操作成员(例如在第一次迭代中对没有元素1的集合做一些事情)?您可能只想让您的函数获取对集合的引用,以及对您不希望对其进行操作的迭代器的引用 -
我的意思是我希望在没有那个特定成员的情况下在片场上进行操作。
-
也许使用filter iterator?
标签: c++ unordered-set multiset