我有一个vector<MyType>
并且想要另一个vector<MyType>
只包含满足一些简单标准的 MyTypes,例如某些数据成员等于某些东西。解决这个问题的最佳方法是什么?
问问题
2727 次
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
) 定义的隐式 lambda,但您可以将任何可调用的(C++03 或更高版本)与 Boost 适配器(fitlered、transformed、reverse 等)一起使用
有关更多展示材料和完整示例,请参见此处:
于 2012-05-22T22:31:38.480 回答