Кратко

  • std::initializer_list: Стандартный класс-шаблон для инициализации объектов фиксированным набором значений.
  • Преимущества: Удобство, улучшение читаемости, передача множества аргументов.
  • Примеры использования: Конструкторы, функции, инициализация контейнеров.

Подробнее

Преимущества использования std::initializer_list

  1. Удобная инициализация объектов.
  2. Улучшение читаемости кода.
  3. Позволяет передавать множество аргументов одной функции.

Использование в функциях

#include <iostream>
#include <initializer_list>
 
void printList(std::initializer_list<int> list) {
    for (auto elem : list) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;
}
 
int main() {
    printList({10, 20, 30, 40}); // Передача списка значений
    return 0;
}

Вывод:

10 20 30 40 

Пример использования в конструкторе (жесть)

#include <iostream>
#include <initializer_list>
 
class MyClass {
private:
    int* data;
    size_t size;
public:
    // Конструктор с initializer_list
    MyClass(std::initializer_list<int> list) : size(list.size()) {
        data = new int[size];
        size_t index = 0;
        for (auto elem : list) {
            data[index++] = elem;
        }
    }
 
    ~MyClass() {
        delete[] data;
    }
 
    void printData() const {
        for (size_t i = 0; i < size; ++i) {
            std::cout << data[i] << " ";
        }
        std::cout << std::endl;
    }
};
 
int main() {
    MyClass obj = {1, 2, 3, 4, 5}; // Инициализация с использованием initializer_list
    obj.printData(); // Вывод: 1 2 3 4 5
    return 0;
}

Вывод:

1 2 3 4 5 

Класс с инициализацией массива

#include <iostream>
#include <initializer_list>
#include <vector>
 
class MyClass {
private:
    std::vector<int> data;
public:
    MyClass(std::initializer_list<int> list) : data(list) {
        // Инициализация вектора с помощью initializer_list
    }
 
    void printData() const {
        for (int elem : data) {
            std::cout << elem << " ";
        }
        std::cout << std::endl;
    }
};
 
int main() {
    MyClass obj = {5, 10, 15, 20, 25};
    obj.printData(); // Вывод: 5 10 15 20 25
    return 0;
}