将内联双精度数组作为方法参数传递

时间:2012-01-05 08:02:30

标签: c++ arrays pass-by-value function-parameter

考虑方法

functionA (double[] arg)

我想传递一个内联的双数组,比如

functionA({1.9,2.8})

并且不首先创建数组然后传递它,如

double var[] = {1.0,2.0};
functionA(var);

这可以用C ++吗?听起来很简单,但无论如何我无法找到关于我的问题的提示,这让我怀疑:)。

3 个答案:

答案 0 :(得分:11)

您可以使用std::initializer_list<>

执行此操作
#include<vector>

void foo(const std::initializer_list<double>& d)
{ }

int main()
{
    foo({1.0, 2.0});
    return 0;
}

在指定-std=c++0x的g ++下编译并为我工作。

答案 1 :(得分:5)

这适用于c ++ 0x

void functionA(double* arg){
   //functionA
}

int main(){
    functionA(new double[2]{1.0, 2.0});
    //other code
    return 0;
}

虽然您需要确保在functionA()中删除了new分配的内存,否则会出现内存泄漏!

答案 2 :(得分:3)

您可以使用std::initializer_list在C ++ 11中执行此操作。

void fun(std::initializer_list<double>);
// ...
fun({ 1., 2. });

你不能在C ++ 03中做到这一点(或者它将涉及足够的样板,这是不可行的。)