12

考虑方法

functionA (double[] arg)

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

functionA({1.9,2.8})

而不是先创建一个数组然后传递它,比如

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

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

4

3 回答 3

11

你可以这样做std::initializer_list<>

#include<vector>

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

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

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

于 2012-01-05T08:10:50.310 回答
6

这适用于 c++0x

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

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

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

于 2012-01-05T08:10:16.957 回答
3

您可以在 C++11 中使用std::initializer_list.

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

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

于 2012-01-05T08:10:30.160 回答