从列表中删除特定对象(c ++)

时间:2012-08-12 12:30:09

标签: c++ list object element

我想从列表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

1 个答案:

答案 0 :(得分:2)

您可以使用迭代器和std::list::erase删除有问题的元素,如下所示:

wielrennerslist.erase(iter);

否则,应该像这样使用remove方法:

wielrennerslist.remove(*iter);

但是这种方法没有做我想你想做的事情。它将删除所有元素,这些元素等于位置N处元素的值。但如果这是你想要的,那么你需要对Wielrenner个对象进行相等比较。请参阅std::list::remove