Хотя стандартные алгоритмы должны быть максимально оптимизированными, насколько это возможно, на основе категории итератора, мне кажется, что на таблице осталось много производительности, не имея возможности рассмотреть базовый контейнер. Последнее) < /code>, в то время как базовые контейнеры могут обеспечить лучший интерфейс: < /p>
- o (d) где d = min (расстояние (первое, среднее), расстояние (среднее, последнее)) с использованием повторного pop_front и push_back (или в другом месте) при вращении всего контейнера, так что O (1) для общего случая вращения одного шага
- Технически всегда o (n) из -за удаления или вставки в начале, но может быть лучше оптимизировано для тривиально копируемых типов путем копирования нескольких элементов сразу
Является ли мое рассуждение здесь правильно? Можно ли оптимизировать приведенные выше случаи с помощью std :: ranges :: rotate ?
Хотя стандартные алгоритмы должны быть максимально оптимизированными, насколько это возможно, на основе категории итератора, мне кажется, что на таблице осталось много производительности, не имея возможности рассмотреть базовый контейнер. Последнее) < /code>, в то время как базовые контейнеры могут обеспечить лучший интерфейс: < /p> [list] [*][code]std::(forward_)list[/code] - o (1) с использованием splice для всех случаев [*][code]std::deque[/code] - o (d) где d = min (расстояние (первое, среднее), расстояние (среднее, последнее)) с использованием повторного pop_front и push_back (или в другом месте) при вращении всего контейнера, так что O (1) для общего случая вращения одного шага [*] [code]std::vector[/code] - Технически всегда o (n) из -за удаления или вставки в начале, но может быть лучше оптимизировано для тривиально копируемых типов путем копирования нескольких элементов сразу [/list] Является ли мое рассуждение здесь правильно? Можно ли оптимизировать приведенные выше случаи с помощью std :: ranges :: rotate ?