通过2个字段查找特定对象的矢量元素

时间:2014-11-30 14:06:06

标签: c++ stl containers

我有一个班级S:

class S
{
public:
    S(int ssx, int ssy, int cnt)
    {
        sx = ssx;
        sy = ssy;
        count = cnt;
    }
    int sx;
    int sy;
    int count;
};

我想创建一个容器,它可以找到与2个参数匹配的元素的指针(迭代器)(比如pair {sx,sy},这对应该等于容器中元素的对)。 是否有任何STL方法或者我应该使用圆形FOR(;;)和S *的简单向量来实现搜索?

1 个答案:

答案 0 :(得分:1)

您可以使用std::find_if()

首先,为两个成员声明一个谓词类

struct CmpS {
    int x;
    int y;
    CmpS(int x, int y) { this.x = x; this.y = y; }
    bool operator()(const S& s) const { return s.sx == x && s.sy == y; }
};

然后,请致电std::find_if()

std::vector<S> vec;
std::vector<S>::iterator iter = std::find_if(vec.begin(), vec.end(), CmpS(x, y));