【发布时间】:2012-08-12 12:30:08
【问题描述】:
我想从列表wielrennerslist 中删除一个特定对象,但是编译时出现了一些错误。
cout << "Wielrenner" << endl;
list<Wielrenner> wielrennerslist = wielerploegOB.getWielrennersList();
cout << "Welke wielrenner wil je verwijderen?" << endl;
// Alle objecten afprinten in de lijst
for (list<Wielrenner>::iterator it = wielrennerslist.begin(); it != wielrennerslist.end(); it++) {
Wielrenner wielrennerOB = *it;
cout << teller << " - " << wielrennerOB.getVoornaam() << " " << wielrennerOB.getAchternaam() << endl;
teller++;
}
cin >> inputID;
// Naar het object gaan
int N = inputID; /* index of the element you want to retrieve */
if (wielrennerslist.size() > N) {
list<Wielrenner>::iterator iter = wielrennerslist.begin();
std::advance(iter, N);
// 'it' points to the element at index 'N'
Wielrenner* wielrennerOB2;
wielrennerOB2 = &*iter;
wielrennerslist.remove(*wielrennerOB2); // something wrong with this?
wielerploegOB.setWielrennerList(wielrennerslist);
}//if
【问题讨论】:
-
您遇到什么错误?你能注意在这里正确缩进你的代码吗?每级4个空格就可以了。这使我们更容易阅读。
-
既然已经有一个迭代器指向要移除的元素,为什么不用列表的erase()函数呢?
-
我不认为
list::remove做你认为它在这里做的事情。我认为您真的想使用list::erase,请参阅我的更新答案。