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