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

Passing inline double array as method argument

本文关键字:方法 参数传递 数组      更新时间:2023-10-16

考虑方法

functionA (double[] arg)

我想通过一个双数组内联,像

functionA({1.9,2.8})

而不是像那样先创建一个数组然后通过它

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

这在C++中可能吗?听起来很简单,但我无论如何都找不到关于我的问题的暗示,这让我产生了怀疑:)。

您可以使用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

这适用于c++0x

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

尽管你需要确保new分配的内存在函数a()中被删除,否则就会出现内存泄漏!

您可以在C++11中使用std::initializer_list来完成此操作。

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

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