我有一个班级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 *的简单向量来实现搜索?
答案 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));