2009-12-03 2 views
3

for 루프는 무엇을하고 있습니까? 나는 그것을 이해할 수 없다.루프가 수행하는 작업은 무엇입니까?

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

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

부분이야? – jalf

+1

나는 친구를 대신하여이 질문을 올렸다. 나는 C++ 사람이 아니기 때문에 여기에 복사/붙여 넣기를하고 대답을 보여 주었다 ... 그는 stackoverflow의 빠른 응답에 감명 받았다. 고마워. –

+3

Nothing 지루한 괴짜들의 집단적인 하이브 정신보다 더 강력하거나 위험합니다. – Sneakyness

답변

25

그것은 어떤 요소가 조건을 만족하지 않는 경우 조건을

dist < i->second 

을 만족 nabors의 첫 번째 요소, 반복자 nabors.end()i 점을 찾는 것.

+0

@Dominic : 수정 해 주셔서 감사합니다. 나는 단지 그것을 생각하고, 그것을 고치기 위해 되돌아 왔고, 그것이 이미 정정되었다는 것을 발견했다. :-) –

+0

@ 제임스 - 문제 없습니다! –

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)); 

몰라, 난 그냥 STL의 팬보이 : 당신을 혼란 루프의

관련 문제