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 に答える