Есть ли возможность в C++ явно задать массив?

Рейтинг: 0Ответов: 1Опубликовано: 11.04.2023

Как функции передать массив {1,2,3,4} без инициализации массива в отдельной переменной, и что в таком случае должна принимать функция в качестве аргумента. Например

void some_fucn( )
{
    //
}
int main()
{
    some_func({ 1,2,3,4,5 });
}

Ответы

▲ 2Принят

Можно явно задать массив и передать его в функцию. Чтобы передать массив без инициализации в отдельной переменной, вы можете использовать C++11 инициализатор списков (initializer lists) и модифицировать функцию, чтобы она принимала std::initializer_list. Вот пример:

#include <iostream>
#include <initializer_list>

void some_func(std::initializer_list<int> list)
{
    for (const auto& elem : list)
    {
        std::cout << elem << " ";
    }
}

int main()
{
    some_func({1, 2, 3, 4, 5});
    return 0;
}

Здесь std::initializer_list<int> позволяет передать список значений, которые будут преобразованы во временный массив. Это позволяет передать список значений в виде {1, 2, 3, 4, 5} прямо в функцию, без необходимости объявления и инициализации массива в отдельной переменной.