如何使用特定过滤器从另一个向量创建std :: vector?

18

我有一个填充了对象的 std::vector。我想要筛选和复制所有谓词返回 true 的元素到一个新的 std::vector 中。

我查看了 findsearch 函数,但它们只返回迭代器。

我正在使用 ObjC++,所以如果需要的话,可以使用块函数和函数子,但不能使用 C++11 函数。

2个回答

19
如果你使用的是C++11,建议使用Eugen答案中建议的std::copy_if。否则,你可以使用std::remove_copy_if并根据谓词逻辑进行相应的修改。

@Protheus "remove_copy_if"并不是很直观,所以很容易被忽略。幸运的是,C++11终于给我们带来了copy_if - juanchopanza

14
你可以使用std :: copy_if方法。请参见此处

1
啊,所以它终于在C++11中出现了!我本来想建议一个手动实现,就像http://lists.boost.org/Archives/boost/2001/01/8022.php那样。 - Benjamin Bannier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接