РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
320 of 815 menu

Функция back_inserter

Функция back_inserter создает специальный итератор вставки, который при присваивании ему значения добавляет это значение в конец контейнера. В параметр мы передаем контейнер, в который будут вставляться элементы. Такой итератор удобно использовать с алгоритмами стандартной библиотеки, например copy или transform, когда заранее неизвестно итоговое количество элементов.

Функция объявлена в заголовочном файле <iterator> и возвращает объект типа std::back_insert_iterator. Контейнер должен поддерживать метод push_back, например std::vector, std::deque или std::list.

Синтаксис

std::back_inserter(container)

Пример

Давайте скопируем элементы одного вектора в конец другого с помощью функции back_inserter:

#include <iostream> #include <vector> #include <iterator> #include <algorithm> using namespace std; int main() { vector<int> src = {1, 2, 3}; vector<int> dst = {4, 5}; copy(src.begin(), src.end(), back_inserter(dst)); for (int el : dst) { cout << el << " "; } cout << endl; return 0; }

Результат выполнения кода:

4 5 1 2 3

Пример

Давайте с помощью функции back_inserter добавим в вектор строки из другого вектора, преобразовав каждую из них в верхний регистр:

#include <iostream> #include <vector> #include <string> #include <iterator> #include <algorithm> #include <cctype> using namespace std; int main() { vector<string> src = {"a", "b", "c"}; vector<string> dst = {"d", "e"}; transform(src.begin(), src.end(), back_inserter(dst), [](string s) { for (char &ch : s) { ch = toupper(ch); } return s; }); for (const string &el : dst) { cout << el << " "; } cout << endl; return 0; }

Результат выполнения кода:

"d e A B C"

Пример

Давайте напрямую запишем значения через итератор, полученный функцией back_inserter:

#include <iostream> #include <vector> #include <iterator> using namespace std; int main() { vector<int> res; auto it = back_inserter(res); *it = 1; *it = 2; *it = 3; for (int el : res) { cout << el << " "; } cout << endl; return 0; }

Результат выполнения кода:

1 2 3

Смотрите также

  • функция inserter,
    которая создает итератор вставки в указанную позицию
  • функция front_inserter,
    которая создает итератор вставки в начало контейнера
  • функция begin,
    которая возвращает итератор на начало контейнера
  • функция end,
    которая возвращает итератор на конец контейнера
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить