Пропуски Junior Алгоритмы STL и ranges обновлено
Идиомы удаления
Вопрос
Удалить из вектора все нули: v.erase(std::__(1)__(v.begin(), v.end(), 0), v.end());. Удалить подряд идущие дубликаты из отсортированного вектора: v.erase(std::__(2)__(v.begin(), v.end()), v.end());.
Попробуйте сами
Заполните пропуски по номерам.
1
2
Показать ответ и разбор
Коротко
std::remove сдвигает оставляемые элементы к началу, std::unique схлопывает соседние равные. Оба возвращают новый логический конец, а erase отрезает хвост.
Что в пропусках
1
remove
2
unique
Разбор
std::remove сдвигает оставляемые элементы к началу, std::unique схлопывает соседние равные. Оба возвращают новый логический конец, а erase отрезает хвост. В C++20 первую строку заменяет std::erase(v, 0).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.