【问题标题】:Pass initial array values uses curly braces传递初始数组值使用花括号
【发布时间】:2014-12-15 06:17:00
【问题描述】:

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

例如:

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

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

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

【问题讨论】:

    标签: c++ arrays function


    【解决方案1】:

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

    【讨论】:

    • 哦,谢谢你的澄清,我不能 100% 确定标题是否真的不存在。
    【解决方案2】:

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

    以下是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);
    

    【讨论】:

      猜你喜欢
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多