Question Déplacer l'élément de liste jusqu'à la fin en STL


J'ai déjà le pointeur de liste de CDrawObject *

std::list<CDrawObject*> elements;

Comment je peux déplacer un élément à la fin de la liste. je vois Référence des algorithmes STL mais je ne trouve pas ces opérations. Comment je peux le faire?


26
2018-02-06 08:37


origine


Réponses:


Utilisez la méthode list splice ()

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

Déplacer l'itérateur i de la liste x dans la liste actuelle à la position "position"

Donc pour le déplacer jusqu'au bout

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

(ils peuvent tous deux être la même liste ou des listes différentes tant que la liste à partir de laquelle l'élément est déplacé a le même type, à la fois T et Allocator)


49
2018-02-06 09:12



UNE std::list est une liste doublement liée, ce qui signifie que vous n'avez pas d'accès aléatoire à l'élément n. Toi devoir peut supprimer l'élément, puis utiliser push_back.


4
2018-02-06 08:50



Supprimez-le puis ajoutez-le à votre liste.


0
2018-02-06 08:45