は、私は私が持つ要素がある場合は削除しようとしています、私は標準リストから要素を削除する
list<Human> mylist;
Human x ("Mike",13);
Human y("pavlek",33);
押し込ま2つの要素でリストを作成している以下のクラスに
class Human
{
public:
Human();
Human(string,int);
virtual ~Human();
string getName();
protected:
private:
string name;
int staj;
};
を持っていると仮定します
for(list<Human>::iterator it=mylist.begin();it!=mylist.end();++it)
{
if(it->getName()=="Mike")
{
mylist.remove(it);
cout<< "removed";
cout<<it->getName();
}
}
: "マイク" という名前を付け、私はこのようにそれを削除しようとしましたしかし、remove()
関数に値を渡すときにエラーが発生しましたが、この要素をリストから削除するにはどうすればよいですか?
''と 'erase' -remove_if'イディオムの使用を検討してください:https://stackoverflow.com/questions/39019806/using-erase-remove-if-idiomしかし、もしそうでなければ、少なくともあなたの 'end()'イテレータをキャッシュしてください! ;-)また、この答えは、最初に一致する要素のみを削除するために、 ''を使ってより良い方法を示しています(https://stackoverflow.com/questions/14737780/how-do-i-remove-the)。 - ベクトルからの値の最初の出現 –
https://stackoverflow.com/questions/3866642/stl-list-erase-items – pm100