将内联双精度数组作为方法参数传递
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 中做到这一点(或者它会涉及到足够多的样板,这将是不可行的)。
【讨论】:
以上是关于将内联双精度数组作为方法参数传递的主要内容,如果未能解决你的问题,请参考以下文章