在向量中查找具有多个要求的对象

时间:2016-07-06 15:50:34

标签: c++ vector find

我创建了一个对象向量,对象有多个私有变量:

   Int x, y, id

现在我希望迭代这个向量,并在我的x和y值之前找到对象。 x&的最小值。 y更大。

我已经看过矢量"发现"命令。这可能会在它的最后一个字段中接受多个参数......比如

(Vector.begin, vector.end, (x > object.x && y > object.y)

我一直在搞乱它并谷歌搜索找到解决方案,但我还没有在find命令的最后一个字段中看到任何涉及多个参数的例子?

2 个答案:

答案 0 :(得分:2)

您可以将std::find_if与lambda

一起使用
Object foo;                // object you want to compare against
std::vector<Object> objs;  // objects you want to look through
auto itFound = std::find_if(begin(objs),
                            end(objs),
                            [&foo](Object const& obj)
                            {
                                return obj.x > foo.x && obj.y > foo.y;
                            });

答案 1 :(得分:1)

您可以使用仿函数或lambda来调用find_if来测试您喜欢的所有条件。

http://en.cppreference.com/w/cpp/algorithm/find