2014-06-15 25 views
0

以下程序掛起。我知道,有幾種方法可以通過更改代碼來修復它。libstd ++ postfix運算符掛起

// 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. 如何解決或解決此一段代碼?
  2. 它是在libstdC++或gcc中的錯誤?

非常感謝您提供答案。

回答

0

iter已經指向集合的末尾。不允許使用iter++進一步增加。解決方法是編寫一個可處理空範圍的循環:

for (auto &it : empty) 
for (; iter != empty.end(); ++iter)