web-dev-qa-db-ja.com

リスト要素をSTLの最後に移動します

私はすでにCDrawObject *のリストポインタを持っています

std::list<CDrawObject*> elements;

いくつかの要素をリストの最後に移動する方法。 STL Algorithms Reference が表示されますが、この操作が見つかりません。どうすればいいですか?

30
G-71

リストメソッドsplice()を使用します

void list::splice ( iterator position, list<T,Allocator>& x, iterator i );

イテレータiをリストxから現在のリストの「位置」に移動します

したがって、それを最後に移動するには

x.splice( x.end(), x, iter );

(アイテムの移動元のリストがTとアロケーターの両方で同じタイプである限り、両方とも同じリストでも異なるリストでもかまいません)

57
CashCow

std::listは二重にリンクされたリストです。つまり、要素nにランダムにアクセスすることはできません。君は する必要がある 要素を削除してから、Push_backを使用できます。

4
Itamar Katz

それを削除してから、リストに追加します。

0
kmkaplan