【发布时间】:2019-08-06 02:06:39
【问题描述】:
我有一个类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; }
};
这些存储在名为listPoints 的list<Point> 中。我有一个函数可以检查某个位置是否与列表中的任何点匹配:
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 循环有根本不同吗?
【问题讨论】:
标签: c++ for-loop foreach iterator