🍿 std::partition — Разделение данных по условию — 18 июня 2026 г. в 07:00:11.093
🍿 std::partition — Разделение данных по условию 🔥 Проблема: Разработчикам часто нужно разделить коллекцию на две группы: элементы, удовлетворяющие условию, и остальные. Ручная реализация требует дополнительных контейнеров или сложной логики с несколькими проходами по данным. 💡Решение: Алгоритм std::partition переупорядочивает элементы так, что все удовлетворяющие предикату оказываются в начале. Возвращает итератор на границу разделения. ✏️ Пример кода: #include <algorithm> #include <vector> std::vector<int> numbers = {1, 5, 2, 8, 3, 9, 4, 7, 6}; // Разделяем на четные и нечетные auto boundary = std::partition(numbers.begin(), numbers.end(), [](int n) { return n % 2 == 0; // Четные в начало } ); // Теперь numbers = {6, 4, 2, 8, 3, 9, 5, 7, 1} // boundary указывает на первый нечетный элемент // Обрабатываем только четные числа for (auto it = numbers.begin(); it != boundary; ++it) { *it *= 2; // Удваиваем четные } 🍨 Преимущества: • Эффективность: работает in-place без дополнительной памяти O(1) • Скорость: линейная сложность O(n) за один проход • Стабильность: существует std::stable_partition для сохранения порядка • Универсальность: подходит для любых типов данных с произвольным предикатом

