Daily bit(e) C++. std::front_inserter, std::back_inserter, std::inserter
Добавлено 7 сентября 2026 в 02:43
Daily bit(e) C++ 99, адаптеры итераторов, вставляющие элементы в диапазоны: std::front_inserter, std::back_inserter, std::inserter.

Предварительное выделение емкости для элементов, как правило, является оптимальным подходом с точки зрения производительности. Однако это усложняет код, и мы можем не знать количество элементов заранее.
Адаптеры вставки решают эту проблему, адаптируя целевой диапазон и вызывая push_back (back_inserter), push_front (front_inserter) или insert (inserter) при каждой записи.
#include <algorithm>
#include <vector>
#include <list>
std::vector<int> src{1, 2, 3};
std::list<int> dst{4};
std::copy(src.begin(), src.end(), std::back_inserter(dst));
// dst == {4, 1, 2, 3}
std::copy(src.begin(), src.end(), std::front_inserter(dst));
// dst = {3, 2, 1, 4, 1, 2, 3}
std::copy(src.begin(), src.end(),
std::inserter(dst, std::next(dst.begin())));
// dst = {3, 1, 2, 3, 2, 1, 4, 1, 2, 3}
// Обратите внимание, inserter не следует использовать с целевыми
// диапазонами, которые при вставки делают итераторы недействительными.
