@ForveAvar

Как правильно передать массив?

Здраствуйте!

Как в функцию передать массив созданий без явного обявления переменной, на javascript я ето могу зделать так
functionCall([0,1,2,3])

как ето сделать на с++?
я делал так
functionCall(&(int {0,1,2,3}[]))
но получаю ошибки, как должно бить?
  • Вопрос задан
  • 2933 просмотра
Решения вопроса 1
gbg
@gbg Куратор тега Arduino
Любые ответы на любые вопросы
На C(90)/C++(98) - никак,
на С++11 - при помощи шаблона функции с переменным количеством аргументов
template<typename F, typename ...T> void f(F f,T...arr)
{
   std::array<F,1+sizeof...(T)> a{f,...arr};
//........
}

на С++11, массив фиксированного размера:
#include <iostream>
#include <array>

using namespace std;

void f(const std::array<int,3> &arr)
{
	for(const auto &v: arr)	
       cout << v << " ";
}

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

на C++11, массив произвольного размера (но с использованием кучи):
#include <iostream>
    #include <vector>
     
    using namespace std;
     
    void f(const std::vector<int> &arr)
    {
    for(const auto &v: arr)	
    cout << v << " ";
    }
     
    int main()
    {
    f({1,2,3,4,5});
    return 0;
    }

варианты предложил Don Kaban

на С99
functionCall((int[]){0, 1, 2, 3});
спасибо, jcmvbkbc
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AxisPod
@AxisPod
std::initializer_list, хотя его надо поддержать со стороны функции.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы