Частичная сортировка std :: list

У меня есть связанный список, часть которого я хочу отсортировать, например:

std::sort(someIterator, otherIterator, predicate);

std :: sort требует итераторов с произвольным доступом, поэтому этот подход не работает. Существует специализация std :: list :: sort, но она может сортировать только весь список. Я не думаю, что у меня достаточно доступа к участникам списка, чтобы написать что-то самому.

Есть ли способ сделать это, не переходя, скажем, на вектор?

и какова основная причина, по которой вы используете список вместо вектора? Несмотря на то, что std :: vector должен выполнять перемещение по среднему значению. половинные элементы (например, при удалении), это очень быстро благодаря кешу. std :: vector превосходит std :: list даже при частом удалении и вставке в rand. поз. У вас должно быть очень большое количество элементов, чтобы использовать список.

relaxxx 27.04.2012 22:24

Честно говоря, я не могу вспомнить, поскольку за три с половиной года, прошедшие с тех пор, как я спросил, я почти уверен, что это каким-то образом было реорганизовано, и я все равно давно ушел с этой работы. Суть вопроса заключалась не столько в эффективности (хотя есть большая вероятность, что данных было достаточно, и я бы не хотел дублировать их все на лету), а скорее просто из любопытства; Казалось странным, что я, похоже, не могу выполнить эту частичную сортировку и что должен быть какой-то способ ее достичь.

Peter 27.04.2012 23:58

oh: D мой плохой ... Я наткнулся на этот вопрос через поиск, а не через "страницу активных вопросов" и не понял этого :) Я вообще-то думал, что это активный вопрос.

relaxxx 28.04.2012 17:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
3
1 965
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Да, но вам придется использовать Сортировка слиянием.

Ответ принят как подходящий

Как насчет того, чтобы отсоединить часть списка, которую вы хотите отсортировать, в отдельный список, затем использовать специализированную сортировку списка, а затем снова подключить ее к исходному списку?

Это хорошая идея. Легко забыть о силе метода splice ().

bk1e 20.10.2008 06:08

Другие вопросы по теме