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

Функция stable_partition

Функция stable_partition переупорядочивает элементы последовательности таким образом, чтобы все элементы, для которых предикат возвращает true, оказались в начале, а все элементы, для которых предикат возвращает false - в конце. Главная особенность этой функции заключается в том, что она сохраняет относительный порядок элементов внутри каждой из групп. В первый параметр мы передаем итератор начала диапазона, во второй - итератор конца диапазона, а в третий - унарный предикат, задающий условие разделения.

Синтаксис

template <class BidirIt, class UnaryPredicate> BidirIt stable_partition(BidirIt first, BidirIt last, UnaryPredicate p);

Пример

Давайте разделим вектор так, чтобы все четные числа шли в начале, а нечетные - в конце, сохраняя исходный порядок чисел:

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> v = {1, 2, 3, 4, 5}; stable_partition(v.begin(), v.end(), [](int n) { return n % 2 == 0; }); for (int n : v) { cout << n << " "; } cout << endl; return 0; }

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

2 4 1 3 5

Пример

Давайте разделим вектор строк так, чтобы строки, начинающиеся с символа 'a', шли в начале, а остальные - в конце. Обратите внимание, что порядок строк внутри каждой группы сохраняется:

#include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; int main() { vector<string> v = {"abcde", "12345", "apple", "banana", "avocado"}; stable_partition(v.begin(), v.end(), [](const string& s) { return s[0] == 'a'; }); for (const string& s : v) { cout << s << " "; } cout << endl; return 0; }

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

"abcde apple avocado 12345 banana"

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

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