0

(いくつかのクラス)のリストがItemあり、このクラスには3つの変数、、priceおよびnameがありcountます。

価格が であるすべてのアイテムを削除する方法を知りたいです320

4

3 に答える 3

8

これはどうですか?

std::list<Item> l;
//...
l.remove_if ([] (Item const& i) {
    return i.price == 320;
});

ドキュメントを参照してください:

于 2013-02-01T17:38:29.337 に答える
4

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());
于 2013-02-01T17:34:25.433 に答える
1

C++ 11 ではなく C++ を使用している場合に備えて、次のようなものです。

bool my_predicate (const Item& value) { return (value.price==320); }

void foo() {
  std::list<Item> l;
  //...
  l.remove_if (my_predicate);
}
于 2013-02-01T18:01:18.443 に答える