0
什么是c++11
范围内环路也导致此:关于C++ 11范围内循环和迭代
std::list<Point> item;
....
//fill the list somewhere else
....
for(Point p : item) {
p.lowerY();
}
若要仅一次(即lowerY()
做什么它应该只有一次这样做,但下一次达到这个循环时,它什么都不做),但是这个:
list<Point>::iterator it;
for (it = item.begin();it != item.end();++it) {
it->lowerY();
}
每次都很完美。有什么不同?
我想..这是因为你得到'按值p'(所以..如果'lowerY'应该改变原始点上的东西..它不会影响原来的)。尝试使用'Point&p'。 – wendelbsilva
是的,修复它,我看到了,所以它制作了原件的副本并改变了它。 @wendelbsilva – shinzou