РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
366 of 815 menu

Функция inplace_merge

Функция inplace_merge объединяет два последовательных отсортированных диапазона, расположенных внутри одного контейнера, в один отсортированный диапазон. Первым параметром функция принимает итератор на начало первого диапазона, вторым - итератор на начало второго диапазона (он же конец первого), а третьим - итератор на конец второго диапазона. Четвертым необязательным параметром можно передать функцию сравнения. В отличие от merge, данная функция выполняет слияние прямо в исходном контейнере, не требуя дополнительной памяти.

Синтаксис

inplace_merge(first, middle, last) inplace_merge(first, middle, last, comp)

Пример

Давайте объединим два отсортированных диапазона вектора: первый от начала до элемента 3 и второй от элемента 3 до конца:

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> vec = {1, 3, 5, 2, 4, 6}; inplace_merge(vec.begin(), vec.begin() + 3, vec.end()); for (int el : vec) { cout << el << " "; } return 0; }

Результат выполнения кода:

1 2 3 4 5 6

Пример

Давайте объединим два диапазона в порядке убывания, передав функцию сравнения greater:

#include <iostream> #include <vector> #include <algorithm> #include <functional> using namespace std; int main() { vector<int> vec = {5, 3, 1, 6, 4, 2}; inplace_merge(vec.begin(), vec.begin() + 3, vec.end(), greater<int>()); for (int el : vec) { cout << el << " "; } return 0; }

Результат выполнения кода:

6 5 4 3 2 1

Смотрите также

  • функция merge,
    которая объединяет два отсортированных диапазона в новый
  • функция sort,
    которая сортирует элементы диапазона
  • функция stable_sort,
    которая устойчиво сортирует элементы диапазона
  • функция is_sorted,
    которая проверяет, отсортирован ли диапазон
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить