Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VIKT0R
8 / 8 / 2
Регистрация: 15.11.2011
Сообщений: 85
#1

Переместить элемент внутри списка std::list - C++

08.07.2015, 11:46. Просмотров 380. Ответов 8
Метки нет (Все метки)

Что-то я не пойму, простая вроде задача - переместить элемент внутри спиcка std::list - стандартной функции нету что-ли?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2015, 11:46     Переместить элемент внутри списка std::list
Посмотрите здесь:
C++ Получение предыдущего объекта из списка (std::list)
C++ Как получить указатель на объект класса из списка std::list?
C++ Как удалить первый элемент из std::list?
C++ В непустом динамическом списке последний элемент переместить в начало списка
Переместить элемент в конец списка и вывести указатели на первый и последний элементы C++
Реализация std::list, сложность list::size() C++
Переместить данный элемент в конец двусвязного списка и вывести указатели на первый и последний элементы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
641 / 562 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
08.07.2015, 11:47     Переместить элемент внутри списка std::list #2
erase,insert?
VIKT0R
8 / 8 / 2
Регистрация: 15.11.2011
Сообщений: 85
08.07.2015, 12:00  [ТС]     Переместить элемент внутри списка std::list #3
Нет, ну понятно - я могу сделать insert в новую позицию, потом erase старой позиции, но при этом ведь еще нужно проверить, не совпадают ли старая и новая позиции, а то останешься без данных.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
08.07.2015, 12:11     Переместить элемент внутри списка std::list #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
VIKT0R, http://www.cplusplus.com/reference/list/list/splice/
VIKT0R
8 / 8 / 2
Регистрация: 15.11.2011
Сообщений: 85
08.07.2015, 13:10  [ТС]     Переместить элемент внутри списка std::list #5
Tulosba, спасибо, работает. Хотя я ожидал чего-то типа list::move( target_pos, source_pos ) - наверное разработчики поленились сделать.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
08.07.2015, 14:00     Переместить элемент внутри списка std::list #6
VIKT0R, лучше не перегружать интерфейс лишними функциями. К тому же, если есть метод для более общего случая.
Max Dark
шКодер самоучка
1783 / 1584 / 575
Регистрация: 09.10.2013
Сообщений: 3,543
Записей в блоге: 6
Завершенные тесты: 2
08.07.2015, 15:50     Переместить элемент внутри списка std::list #7
Хм.. а std::swap тут разве не подойдет?
C++
1
2
3
4
5
auto iter1 = lst.begin();
auto iter2 = ...;
 
//....
std::swap(*iter1, *iter2);
Добавлено через 9 минут
Извиняюсь, понял, что не понял вопроса)
VIKT0R
8 / 8 / 2
Регистрация: 15.11.2011
Сообщений: 85
08.07.2015, 15:59  [ТС]     Переместить элемент внутри списка std::list #8
Cra3y, спасибо, тоже работает, но splice больше подходит по смыслу, т.к. мне не нужно обменивать элементы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2015, 16:11     Переместить элемент внутри списка std::list
Еще ссылки по теме:
Передача функции указатель на элемент std::vector<std::string> C++
Потокобезопасность std::map::end, std::list::end C++
C++ Создать класс Элемент списка (Node), а затем класс Список (List)
Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int') C++
Static std::list C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
08.07.2015, 16:11     Переместить элемент внутри списка std::list #9
Cra3y, swap будет вызывать конструктор копирования/перемещения подлежащих объектов, а splice не будет. Ну и смысл всё же разный
Yandex
Объявления
08.07.2015, 16:11     Переместить элемент внутри списка std::list
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru