libstd ++ postfix运算符挂起

时间:2014-06-15 15:08:53

标签: gcc iterator hang libstdc++ postfix-operator

以下程序挂起。我知道,有几种方法可以通过更改代码来修复它。

// 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中的错误吗?
  3. 提前感谢您的答案。

1 个答案:

答案 0 :(得分:0)

iter已指向该集的结尾。不允许使用iter++进一步增加它。解决方法是编写一个可以处理空范围的循环:

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