c++ - 在 for 循环 C++ 中擦除时 std::list 的不可解引用迭代器
问题描述
我正在尝试修改 foor 循环内的列表大小(擦除元素),并且随着迭代减少 de foor 循环范围:
list<int>::iterator it, it2;
int pairs = 0;
for(it = lista.begin(); it != lista.end(); it++ )
{
int count =0;
for(it2 = lista.begin(); it2 != lista.end(); it2++)
{
if (*it2 == *it)
{
it2 = lista.erase(it2);
count = count + 1;
}
}
if (count/2 >= 2)
pairs = int(count/2) + pairs;
}
cout << pairs;
当我运行上面的代码时,我不断收到错误
std::list 的不可解引用迭代器
问题出在第一个迭代器 (it) 上,它似乎在使用 it2 从列表中擦除元素时丢失了。
亲切的问候
解决方案
推荐阅读
- javascript - React Native 上传图片失败
- python - 如何为没有概率的二元分类器(svm)绘制 ROC 并计算 AUC?
- r - 无法安装 tinytex 包。(也许应该更改存储库设置。)
- javascript - 是否可以将“this.src”发送到 js 函数?
- python - 将参数作为数据结构传递给 Python 函数
- qbasic - 如何在 QBasic 上通过 Internet 发送变量?
- jquery - 如何使用 jquery validate 插件验证特殊类型的数组输入
- python - QThread 没有并行运行
- sql - 如何使用 select 显示 SQL 中的工作年限?
- javascript - Object.keys = for 循环