如果我有以下代码(假设该集合是无序集合):
mySet.insert(0);
int i = 1;
for(auto itr = mySet.begin(); itr != mySet.end(); ++itr){
mySet.insert(i);
i++;
}
它最终将在迭代时更新集,并导致无限循环。如果我想在修改之前只对集合中的元素进行迭代,那么如何确保新元素的添加不会影响迭代?
如果要使用列表执行此操作,则代码应类似于:
myList.push_front(0);
int i = 1;
for(auto itr = myList.begin(); itr != myList.end(); ++itr){
myList.push_front(i);
i++;
}
但是没有用于集合的push_front方法(很有意义),但是我想利用集合仅包含唯一元素这一事实来做到这一点。
答案 0 :(得分:2)
你不能。
可能的解决方法:
创建集合的副本,遍历该副本。
创建一个要添加新值的临时集,然后在迭代之后将所有值从该临时集添加到原始集。