2016-12-06 5 views
2

C++コンテナを反復処理する必要がある場合があります。C++コンテナを反復処理しながら変更するためのGenenalソリューション?

コールバックがstd::listに格納されているときと同じように、これらのコールバックを繰り返してコールするときは、std::listを変更する必要があります。

しかし、これはボックスからは安全ではありません。この種の問題に対する一般的な解決法はありますか?

+0

反復中にコンテナを変更できるようにするには、安定と呼ばれるものが必要です。 http://stackoverflow.com/questions/16709828/how-to-check-whether-a-container-is-stable – Lanting

+0

コードを表示すると、その手助けをすることができます。あなたの問題はXY問題のようです。 – Stargateur

答えて

0

時々、反復中にコンテナからアイテムを削除する必要があります。 with C++ 11(次のイテレータを消去してください)このコードのようにすることができます。

std::vector<MyClass> vector; 
    std::vector<MyClass>::iterator it; 
    for(it=vector.begin();it!=vector.end();) 
    { 
    if(it->removeFromList()) 
    { 
     it=vector.erase(it); 
    } 
    else 
    { 
     it->doSomething(); 
     ++it; 
    } 
    } 

どのようにしてコンテナを正確に編集しますか?

+0

'for'ループの目的ではなく、' while'ループを使って行います。コードをスペースでインデントします。 – Stargateur

関連する問題