迭代一组和擦除元素
Iterating over a set of pairs and erasing elements
我遇到运行时错误,我怀疑这是因为这是该代码块,我想知道如何在集合上迭代并在中间擦除。
for (auto it : a) {
if (freq[it.first] == 1 || freq[it.second] == 1)
a.erase(it);
}
我尝试了我在另一个问题上找到的解决方案,但似乎仍然没有用:
for (set<pair<int, int> >:: iterator it = a.begin(); it != a.end();)
{
cout << it->first << " " << it->second << endl;
if (freq[it->first] == 1 || freq[it->second] == 1)
{
removed = true;
a.erase(it);
}
else
{
++it;
}
}
这解决了:
for (set<pair<int, int> >:: iterator it = a.begin(); it != a.end();/* blank */)
{
cout << it->first << " " << it->second << endl;
if (freq[it->first] == 1 || freq[it->second] == 1)
{
removed = true;
it = a.erase(it);
}
else
{
++it;
}
}
相关文章:
- 调用 erase() 函数是否也会在擦除元素之前更改迭代器值?
- 为什么在功能内擦除元素后不列出更新?
- 在任一方向上迭代容器并擦除元素
- 从向量和对向量中擦除元素的差异
- 从地图上擦除元素,然后将其放回原处
- 迭代一组和擦除元素
- 使用常量键从集合中擦除元素
- 从向量中擦除元素是否也会擦除元素中存在的所有成员向量
- 如何更有效地从向量或集合中擦除元素?
- 在尝试擦除元素之前,我们是否需要检查unordered_set是否包含元素
- 从矢量中最快的擦除元素或更好地利用内存(排序基数)
- 迭代地图和擦除元素
- 迭代时从 STL 容器中查找并擦除元素
- 在 c++ 中从列表中擦除元素时出现问题
- C++嵌套的带有擦除元素的循环
- 矢量2D擦除元素并保持字段为空
- 比较第一个向量的不同矢量迭代器和擦除元素
- 从多维矢量中擦除元素
- 根据属性值在结构向量中擦除元素
- 从hash_map内的列表中擦除元素