std::list
当您遍历该列表时,您如何管理其中的对象需要移动它们的位置,甚至从该列表中删除它们自己的情况?
下面是一个复杂的例子。
你有一个有序 list
的对象。
list< Object* > objects ;
你有一个循环遍历每个
for( list< Object* >::iterator iter = objects.begin() ; iter != objects.end() ; ++iter )
{
// call "move()" on each
(*iter)->move() ;
}
现在这是问题所在。 Object::move()
有时会重新排序 list,也就是我们用上面的循环迭代的那个列表。
我不知道如何设计这个。如何编写和调用一个成员函数Object::move()
,每次调用它时都可能重新排序列表,并遍历列表中的每个元素objects
,调用?Object::move()
Object
list