传递初始数组值使用花括号

时间:2014-12-15 06:17:00

标签: c++ arrays function

有没有办法使用其初始大括号值将数组传递给函数?

例如:

void doSomething(?)
{
    array[5] = ?;
}

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

顺便说一句,我认为我不能在VS 2012中包含initializer_list,我不相信它存在。据说我听说这对这些案件很有用。

2 个答案:

答案 0 :(得分:0)

您无法在VS 2012中包含initializer_list,因为该版本不提供此功能。微软用VS2013添加了它。见http://msdn.microsoft.com/en-us/library/vstudio/hh567368(v=vs.120).aspx

答案 1 :(得分:0)

List initialization仅在C ++ 11之后可用。将支撑的init列表作为函数参数传递尝试列出初始化相应的参数。因此,任何可以列表初始化的类型都是您案例的有效参数类型。特别是,聚合类型initializer_list - 具有与支撑初始化列表中的类型匹配的构造函数的可构造类型和类型(仅限非缩小转换)将起作用。

以下是doSomething的一些可能签名:

void doSomething(initializer_list<int>);
void doSomething(vector<int>);

struct Agg
{
  int a,b,c,d,e;
};
void doSomething(Agg);

struct Constructible
{
Constructible(int, int, int, int, int);
};
void doSomething(Constructible);