c++ - 如何用满足某些条件的另一个 vector 中的数据填充 std::vector

标签 c++ stl vector

我有一个点 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/

相关文章:

c++ - 递归泛型函数用作谓词,编译失败

c++ - 重载迭代器 : C++ Semantics Question

c++ - 试图通过重载打印对象的 vector ?

c++ - 在 C++11 std::atomic 中,用于++、-- 和 += 等运算符的 memory_order 是什么?

c++ - 使用派生的 Qt 小部件类时的父问题 (?)

c++ - ATL CCommand 销毁时关闭

c++ - 为什么 std::deque 不是在索引 0 之前保留内存的 vector ?

c++ - emplace_back 和继承

c++ - 包含一些 foo_subclass 元素的 vector<foo> 的内存布局

c++ - OpenGL FrameBuffer 和 glViewport