for循环在做什么?我无法理解。
list<pair<int, double> > nabors;
list<pair<int, double> >::iterator i;
for (i = nabors.begin(); i != nabors.end() && dist >= i->second; i++);
答案 0 :(得分:25)
它找到满足条件
的nabors
中的第一个元素
dist < i->second
如果没有元素满足该条件,则迭代器i
指向nabors.end()
。
答案 1 :(得分:3)
使用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));
Dunno,我只是一个STL粉丝:)
答案 2 :(得分:2)
您可能需要检查一些STL和迭代器教程。
这是一个 http://www.cprogramming.com/tutorial/stl/iterators.html