0

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

// 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 中的错误吗?

预先感谢您的回答。

4

1 回答 1

0

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

for (auto &it : empty)
for (; iter != empty.end(); ++iter)
于 2014-06-15T15:34:13.430 回答