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

Класс initializer_list

Класс initializer_list представляет собой легковесную обёртку над массивом объектов типа T, который автоматически создаётся компилятором при использовании списка инициализации в фигурных скобках. Он позволяет функциям и конструкторам принимать произвольное количество аргументов одного типа. Класс хранит указатель на первый элемент и размер списка, при этом сами элементы являются константными и не могут быть изменены через объект initializer_list.

Объекты initializer_list обычно используются для инициализации контейнеров стандартной библиотеки, таких как vector, list или map, а также для передачи переменного числа аргументов в функции. Время жизни такого объекта совпадает со временем жизни выражения, в котором он был создан.

Синтаксис

#include <initializer_list> std::initializer_list<T> il = {значение1, значение2, ...};

Основные методы класса:

il.begin() // итератор на первый элемент il.end() // итератор на элемент после последнего il.size() // количество элементов в списке

Пример

Давайте создадим объект initializer_list из нескольких целых чисел и выведем его элементы и размер на экран:

#include <iostream> #include <initializer_list> using namespace std; int main() { initializer_list<int> il = {1, 2, 3, 4, 5}; for (int elem : il) { cout << elem << " "; } cout << endl; cout << il.size() << endl; return 0; }

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

1 2 3 4 5 5

Пример

Давайте напишем функцию, которая принимает initializer_list и возвращает сумму всех её элементов:

#include <iostream> #include <initializer_list> using namespace std; int sum(initializer_list<int> il) { int res = 0; for (int elem : il) { res += elem; } return res; } int main() { cout << sum({1, 2, 3, 4, 5}) << endl; cout << sum({10, 20, 30}) << endl; return 0; }

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

15 60

Пример

Давайте используем initializer_list для инициализации вектора строками:

#include <iostream> #include <vector> #include <string> using namespace std; int main() { vector<string> vec = {"a", "b", "c", "d", "e"}; for (const string& elem : vec) { cout << elem << " "; } cout << endl; return 0; }

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

"a b c d e"

Пример

Давайте получим итераторы на начало и конец списка с помощью методов begin и end и пройдёмся по элементам:

#include <iostream> #include <initializer_list> using namespace std; int main() { initializer_list<int> il = {1, 2, 3, 4, 5}; for (auto it = il.begin(); it != il.end(); ++it) { cout << *it << " "; } cout << endl; return 0; }

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

1 2 3 4 5

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

  • тип int,
    который хранит целые числа
  • тип array,
    который хранит фиксированный набор элементов
  • тип tuple,
    который хранит набор разнотипных значений
  • тип pointer,
    который хранит адрес объекта в памяти
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить