У меня есть класс Point
, в котором есть метод члена для получения позиции:
class Point {
private:
int x; int y;
public:
Point(int a, int b) {
x = a; y = b;
}
int getX() { return x; }
int getY() { return y; }
};
Они хранятся в list<Point>
с именем listPoints
. У меня есть функция, которая проверяет, соответствует ли позиция какой-либо из точек в списке:
bool checkMatch(int x, int y) {
for (Point p : listPoints) {
if (p.getX() == x && p.getY() == y) {
return true;
}
}
return false;
}
Обратите внимание, что .
используется для доступа к методам-членам Point
, но есть и другой способ:
bool checkMatch(int x, int y) {
list<Point>::iterator p = listPoints.begin();
for (; p != listPoints.end(); ++p) {
if (p->getX() == x && p->getY() == y) {
return true;
}
}
return false;
}
Чем эта функция отличается от предыдущей, в частности, почему .
больше не работает, и мне нужно использовать ->
вместо этого для доступа к методам-членам Point
? Эти циклы foreach принципиально отличаются?