0

リストから特定のオブジェクトを削除したいのですが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

1 に答える 1

2

iteratorとstd::list :: Eraseを使用して、次のように問題の要素を削除できます。

wielrennerslist.erase(iter);

それ以外の場合、removeメソッドは次のように使用する必要があります。

wielrennerslist.remove(*iter);

しかし、この方法では、あなたがやりたいと思うことはできません。位置にある要素の値に等しいすべての要素を削除しNます。しかし、これが必要な場合は、Wielrennerオブジェクトの等価性を比較する必要があります。std :: list::removeを参照してください。

于 2012-08-12T12:52:39.457 に答える