Easyитераторы
Чем std::back_inserter удобен?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
std::back_inserter(container) возвращает output iterator, который при присваивании вызывает container.push_back(value). Не нужно заранее резервировать размер.
std::vector<int> src{1, 2, 3};
std::vector<int> dst; // пустой — не нужно resize
std::copy(src.begin(), src.end(), std::back_inserter(dst));
// dst = {1, 2, 3}
// Похожие
std::front_inserter(deque); // push_front — deque/list
std::inserter(container, it); // insert в позицию it — все контейнеры
std::istream_iterator<int>(std::cin); // чтение потока как последовательности- Самый частый inserter — применяется везде, где алгоритм должен «накопить» результат;
- Без него пришлось бы заранее
resizedst и использовать обычный итератор.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.