2014-06-15 4 views
0

다음 프로그램이 중단됩니다. 몇 가지 방법으로 코드를 변경하여 문제를 해결할 수 있습니다.libstd ++ postfix operator hangs

// How to compile 
// % g++ <filename>.cpp 

#include <iostream> 
#include <set> 

using namespace std; 
int main() 
{ 
    set<int> empty; 
    set<int>::iterator iter = empty.begin() ; 
    while (iter++ != empty.end()) 
    { 
     cout << *iter << "\n"; 
    } 
    return 0; 
} 

내 질문은 :

  1. 해결 방법을 또는 코드의이 부분을 해결하기 위해? 그것은 된 libstdc 버그 ++ 또는 GCC
  2. 입니까?

는 답변에 미리 감사드립니다.

답변

0

iter는 이미 세트의 끝을 가리키는. iter++으로 더 늘리면 안됩니다.

for (auto &it : empty) 
for (; iter != empty.end(); ++iter) 
: 해결 방법은 빈 범위를 처리 할 수있는 루프를 작성하는 것입니다