Что выведет код Senior Алгоритмы STL и ranges обновлено

Что выведет: stable_partition, rotate, unique

Вопрос

Что выведет программа (C++20, g++ 14)? Каждый вывод с новой строки, как в консоли.

#include <algorithm>
#include <iostream>
#include <vector>

void print(const std::vector<int>& v) {
    for (int x : v) std::cout << x;
    std::cout << '\n';
}

int main() {
    std::vector<int> v{1, 2, 3, 4, 5, 6};
    std::stable_partition(v.begin(), v.end(), [](int x) { return x % 2 == 0; });
    print(v);
    std::rotate(v.begin(), v.begin() + 2, v.end());
    print(v);
    std::vector<int> w{1, 1, 2, 2, 1, 3, 3};
    w.erase(std::unique(w.begin(), w.end()), w.end());
    print(w);
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 246135, 613524, 1213. stablepartition ставит чётные вперёд, сохраняя порядок внутри групп: 246135. rotate делает элемент с индексом 2 первым: 613524. unique убирает только соседние повторы, поэтому вторая единица после двойки остаётся: 1213.

Что выведет

246135
613524
1213

Разбор

stable_partition ставит чётные вперёд, сохраняя порядок внутри групп: 246135. rotate делает элемент с индексом 2 первым: 613524. unique убирает только соседние повторы, поэтому вторая единица после двойки остаётся: 1213.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.