我有一个点 vector ,我需要获取与给定点的距离小于某个值的点。
我可以用一个简单的循环来完成,但是有更好的方法吗?
提前致谢
最佳答案
使用std::remove_copy_if
:
#include <algorithm>
#include <vector>
#include <iostream>
#include <functional>
#include <iterator>
int main() {
std::vector<int> v;
v.push_back(3);
v.push_back(2);
v.push_back(6);
v.push_back(10);
v.push_back(5);
v.push_back(2);
std::vector<int> v2;
std::remove_copy_if(v.begin(), v.end(), back_inserter(v2),
std::bind2nd(std::greater<int>(),5));
std::copy (v2.begin(), v2.end(), std::ostream_iterator<int>(std::cout));
std::cout << std::endl;
return 0;
}
remove_copy_if
将为每个未通过谓词的项目将序列复制到输出迭代器。在这种情况下,谓词是“x>5”。对于通过谓词测试的每个项目,似乎没有等效的 copy_if
,但您始终可以使用 std::not1
否定谓词。
关于c++ - 如何用满足某些条件的另一个 vector 中的数据填充 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3583566/