Переместить элемент списка в конец в STL - PullRequest
30 голосов
/ 06 февраля 2011

У меня уже есть указатель списка CDrawObject *

std::list<CDrawObject*> elements;

Как я могу переместить некоторый элемент в конец списка.Я вижу Справочник по алгоритмам STL , но я не нахожу эти операции.Как я могу это сделать?

Ответы [ 3 ]

57 голосов
/ 06 февраля 2011

Используйте метод списка splice ()

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

Переместить итератор i из списка x в текущий список на позицию "position"

Таким образом, чтобы переместить его вконечный результат

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

(оба могут быть одним и тем же списком или разными списками, если список, из которого перемещен элемент, имеет одинаковый тип, как T, так и Allocator)

4 голосов
/ 06 февраля 2011

A std::list - это двусвязный список, что означает, что у вас нет произвольного доступа к элементу n.Вы должны удалить элемент, а затем использовать push_back.

0 голосов
/ 06 февраля 2011

Удалите его и добавьте в список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...