C++コンテナを反復処理する必要がある場合があります。C++コンテナを反復処理しながら変更するためのGenenalソリューション?
コールバックがstd::list
に格納されているときと同じように、これらのコールバックを繰り返してコールするときは、std::list
を変更する必要があります。
しかし、これはボックスからは安全ではありません。この種の問題に対する一般的な解決法はありますか?
C++コンテナを反復処理する必要がある場合があります。C++コンテナを反復処理しながら変更するためのGenenalソリューション?
コールバックがstd::list
に格納されているときと同じように、これらのコールバックを繰り返してコールするときは、std::list
を変更する必要があります。
しかし、これはボックスからは安全ではありません。この種の問題に対する一般的な解決法はありますか?
時々、反復中にコンテナからアイテムを削除する必要があります。 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;
}
}
どのようにしてコンテナを正確に編集しますか?
'for'ループの目的ではなく、' while'ループを使って行います。コードをスペースでインデントします。 – Stargateur
反復中にコンテナを変更できるようにするには、安定と呼ばれるものが必要です。 http://stackoverflow.com/questions/16709828/how-to-check-whether-a-container-is-stable – Lanting
コードを表示すると、その手助けをすることができます。あなたの問題はXY問題のようです。 – Stargateur