【发布时间】:2015-03-31 06:14:32
【问题描述】:
在对集合执行 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);
}
还有在范围内for循环怎么样?
我假设答案适用于地图和集合。
【问题讨论】:
标签: c++ dictionary foreach set erase