std::list
そのリストを繰り返し処理しているときに、内のオブジェクトの位置を移動したり、リストから削除したりする必要がある状況をどのように管理しますか?
複雑な例を次に示します。
オブジェクトの順序 list
があります。
list< Object* > objects ;
それぞれを繰り返すループがあります
for( list< Object* >::iterator iter = objects.begin() ; iter != objects.end() ; ++iter )
{
// call "move()" on each
(*iter)->move() ;
}
これがキャッチです。 は、上記のループで反復処理を行っているまさにリストであるlistObject::move()
の順序を変更することがあります。
これを設計する方法がわかりません。リストを呼び出すたびにリストの順序を変更し、リスト内の各要素を反復処理して各要素を呼び出すメンバー関数を作成して呼び出すにはどうすればObject::move()
よいですかobjects
Object::move()
Object
list