TGViewer
Библиотека C/C++ разработчика | cpp, boost, qt Библиотека C/C++ разработчика | cpp, boost, qt @cppproglib · 16.9K subscribers
Post #6562 2.85K
🧩 std::rotate_copy — зачем нужна копия, если есть rotate?

std::rotate_copy существует не для удобства — он закрывает конкретный случай, когда мутация исходника недопустима, но выделять промежуточный буфер вручную неудобно.

std::vector<int> src = {1, 2, 3, 4, 5};
std::vector<int> dst(src.size());

std::rotate_copy(src.begin(), src.begin() + 2, src.end(), dst.begin());
// src: {1, 2, 3, 4, 5} — не тронут
// dst: {3, 4, 5, 1, 2}


🔍 Под капотом:

rotate_copy — это ровно два вызова std::copy:

auto out = std::copy(middle, last, result);   // [middle, last) первыми
std::copy(first, middle, out); // [first, middle) следом


Никакой магии. Никаких swap. Просто два последовательных копирования.

Сложность: O(n) с одним проходом данных, без дополнительной памяти (кроме выходного диапазона).

💡 Когда это важно:

// Параллельная обработка: исходник читается несколькими потоками
std::rotate_copy(src.begin(), pivot, src.end(),
std::back_inserter(result));


⚠️ Диапазоны [first, last) и [result, ...) не должны перекрываться — иначе поведение не определено. В отличие от std::rotate, который работает in-place и перекрытий нет по определению.

❗️rotate_copy — частный случай общего принципа STL: алгоритмы с суффиксом _copy не мутируют исходник и пишут в отдельный output iterator.

📍Навигация:
ВакансииЗадачиСобесы

Библиотека C/C++ разработчи
ка

#под_капотом
  • 👍 7
  • ❤ 2
More from @cppproglib
  1. Sep 19, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
  2. Sep 18, 2026От исходного кода до процессора: разберись, как работает программа 💻 Стартует практически…
  3. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  4. Sep 13, 2026🤪 Если бы можно было задать один вопрос про AI в разработке — что бы вы спросили? Как выб…
  5. Sep 13, 2026🤩 Inline static в классах — забудь про .cpp Сколько раз ты забывал добавить определение s…
  6. Sep 13, 2026🌸 Вселенная намекает: пора уже начать этот курс С 14 сентября цены в Proglib Academy выра…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →