8

私はを持っていて、いくつかの単純な基準を満たすMyTypesのみを含むvector<MyType>別のものが欲しいです。たとえば、いくつかのデータメンバーが何かに等しいということです。vector<MyType>これを解決するための最良の方法は何ですか?

4

2 に答える 2

17

使用copy_if

#include <algorithm>  // for copy_if
#include <iterator>   // for back_inserter

std::vector<MyType> v2;
std::copy_if(v1.begin(), v1.end(), std::back_inserter(v2),
             [](MyType const & x) { return simple_citerion(x); } );
于 2012-05-22T22:31:12.897 に答える
7

Boostを少し使用すると、次のことができます。

std::vector<int> v = {1,2,-9,3};

for (auto i : v | filtered(_arg1 >=0))
    std::cout << i << "\n";

このサンプルでは、​​式テンプレート()で定義された暗黙のラムダにPhoenixを使用して_arg1 >= 0いますが、Boostアダプター(フィトラー、トランスフォーム、リバースなど)で任意の呼び出し可能(C ++ 03以降)を使用できます

その他のショーケース資料と完全な例については、こちらをご覧ください。

于 2012-05-22T22:31:38.480 に答える