for循环在做什么?我无法理解它。循环做什么?
list<pair<int, double> > nabors;
list<pair<int, double> >::iterator i;
for (i = nabors.begin(); i != nabors.end() && dist >= i->second; i++);
for循环在做什么?我无法理解它。循环做什么?
list<pair<int, double> > nabors;
list<pair<int, double> >::iterator i;
for (i = nabors.begin(); i != nabors.end() && dist >= i->second; i++);
它的发现在nabors
满足条件
dist < i->second
如果没有元素满足该条件的第一要素,迭代器i
点nabors.end()
。
@Dominic:感谢您的纠正;我只是想到了,回来修复它,发现它已经被纠正了。 :-) – 2009-12-03 14:58:36
@詹姆斯 - 没问题! – 2009-12-03 15:07:14
你可能想检查一些STL和迭代器教程。
这里是一个 http://www.cprogramming.com/tutorial/stl/iterators.html
也许代码与std::find_if
和明确的断言更清晰?
class further_away_than
{
double dist;
public:
further_away_than(double dist) : dist(dist) {}
bool operator()(const pair<int, double>& p)
{
return p.second > dist;
}
};
#include <algorithm>
// ...
i = find_if(nabors.begin(), nabors.end(), further_away_than(dist));
不知道,我只是一个STL变形金刚迷:)
哪个环路的一部分是混淆吗? – jalf 2009-12-03 14:57:38
我代表一个朋友发布了这个问题,我不是C++的人,所以我只是复制/粘贴在这里,我向他展示了答案...他对于stackoverflow的快速回复印象深刻 谢谢你们家伙 – 2009-12-03 15:01:00
什么都没有比无聊的书呆子的集体蜂群思维更强大或更危险。 – Sneakyness 2009-12-03 15:14:50