这个循环在做什么?

时间:2009-12-03 14:47:49

标签: c++

for循环在做什么?我无法理解。

list<pair<int, double> > nabors;
list<pair<int, double> >::iterator i;

for (i = nabors.begin(); i != nabors.end() && dist >= i->second; i++);

3 个答案:

答案 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