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

Posted

技术标签:

【中文标题】将内联双精度数组作为方法参数传递【英文标题】:Passing inline double array as method argument 【发布时间】:2012-02-03 02:12:14 【问题描述】:

考虑方法

functionA (double[] arg)

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

functionA(1.9,2.8)

而不是先创建数组再传递,比如

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

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

【问题讨论】:

在C++中的方法是通过层次结构存在的虚成员函数 【参考方案1】:

您可以通过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++ 下编译并为我工作。

【讨论】:

【参考方案2】:

这适用于 c++0x

void functionA(double* arg)
   //functionA


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

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

【讨论】:

【参考方案3】:

您可以在 C++11 中使用 std::initializer_list 来实现。

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

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

【讨论】:

以上是关于将内联双精度数组作为方法参数传递的主要内容,如果未能解决你的问题,请参考以下文章

无法使用双指针作为函数参数传递二维数组[重复]

将数组作为 C++ 中方法的 const 参数传递

如何在 C++ 中创建和初始化双精度的 SAFEARRAY 以传递给 C#

如何将多个参数作为数组传递给 ruby​​ 方法?

修改作为方法参数传递的数组

为啥我们将字符串数组作为参数传递给 main() 方法,为啥不传递任何集合类型或包装类型或原始类型?