(いくつかのクラス)のリストがItem
あり、このクラスには3つの変数、、price
およびname
がありcount
ます。
価格が であるすべてのアイテムを削除する方法を知りたいです320
。
これはどうですか?
std::list<Item> l;
//...
l.remove_if ([] (Item const& i) {
return i.price == 320;
});
ドキュメントを参照してください:
std::list
コンテナとして使用する場合は、 std::list::remove_if
; @wildの回答を参照してください。
を使用せずstd::list
、別のコンテナを使用する場合は、 を使用しますstd::remove_if
。
#include <algorithm>
list.erase(std::remove_if(list.begin(), list.end(), [] (Item const& i) {
return i.price == 320;
}), list.end());
C++ 11 ではなく C++ を使用している場合に備えて、次のようなものです。
bool my_predicate (const Item& value) { return (value.price==320); }
void foo() {
std::list<Item> l;
//...
l.remove_if (my_predicate);
}