Что выведет код 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 ошибок.