//説明:の使用で遭遇STL
//作成日:2019年7月8日午前九時19分15秒
//著者:channy
Notes_STL_List_And_Map
考える:イテレータが期限切れになり、消去した後、イテレータをリセットする必要があります
問題:プログラムがまだクラッシュします
原因:このコードは、未知の理由です。仕事登場消去コードは、ローカル変数は、実際には、マップを消去しませんでしたさ
フォローアップ:数日後に良い試みを。。。
(神学が良いプログラマプログラマではないと解釈バグを経験していません)
コード:
#include <QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
//QCoreApplication a(argc, argv);
QList<int> ql;
qDebug() << ql.size();
QMap<int, QList<int>> qm;
qm[0] = ql;
for (QMap<int, QList<int>>::iterator iter = qm.begin(); iter != 大专栏 Notes_STL_List_And_Map"n">qm.end(); iter++) {
qDebug() << qm.size();
for (QList<int>::iterator itr = iter->begin(); itr != iter->end(); itr++) {
itr = iter->erase(itr);
}
if (iter->size() == 0) {
iter = qm.erase(iter);
//如果不加下面的判断,会崩溃。。。iter != qm.end() == true. But why???
if (qm.size() == 0) break;
}
}
//return a.exec();
return 0;
}