我有一个vector<MyType>并希望另一个vector<MyType>只包含满足一些简单标准的MyTypes,例如某些数据成员等于某些东西.解决这个问题的最佳方法是什么?
Ker*_* SB 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); } );
Run Code Online (Sandbox Code Playgroud)
使用一点Boost,你可以:
std::vector<int> v = {1,2,-9,3};
for (auto i : v | filtered(_arg1 >=0))
std::cout << i << "\n";
Run Code Online (Sandbox Code Playgroud)
此示例使用Phoenix作为由expression template(_arg1 >= 0)定义的隐式lambda ,但您可以使用任何可调用的(C++ 03或更高版本)和Boost适配器(fitlered,transformation,reverse等)
请参阅此处了解更多展示材料和完整示例: