У меня есть класс S:
class S
{
public:
S(int ssx, int ssy, int cnt)
{
sx = ssx;
sy = ssy;
count = cnt;
}
int sx;
int sy;
int count;
};
Я хочу создать контейнер, который может найти указатель (итератор) элемента, который соответствует двум параметрам (например, пара {sx, sy}, эта пара должна быть равна паре элемента в контейнере). Существуют ли какие-либо методы STL или я должен выполнить поиск, используя круг FOR (;;) и простой вектор S *?
Вы можете использовать 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));