【发布时间】:2018-09-14 01:22:29
【问题描述】:
我不确定这是否可行,但我对想法持开放态度。
我有一个 c++ 函数。它对用户定义为输入的数组进行一些计算,并将生成两个输出值。我们称它为“myfunction”,它看起来像这样:
void myfunction(double array1[18],double array[9],double array[2],double *output1, double *output2)
我想让这个函数更通用,以便它能够接收不同大小的数组。意思是,我希望这个函数的用户能够定义其他大小的数组输入。
例如,
void myfunction(double array1[81],double array[27],double array[3],double *output1, double *output2)
从数学上讲,“myfunction”能够计算出准确的输出,尽管数组大小。我不想复制“myfunction”,因为用户可以将总共 5 组不同的数组大小定义为输入。
有什么想法吗?提前谢谢你
【问题讨论】:
-
看看
std::vector和std::array -
void myfunction(double array1[18],double array[9],double array [2],double *output1, double *output2)-- 前三个参数是 not 数组。该声明与此声明完全相同:void myfunction(double *array1, double *array, double *array, double *output1, double *output2);。传递的数组衰减为一个指针——这种声明形式的所有大小信息都丢失了。 -
添加到@KhouriGiordano,通过引用接受
std::vector(或const,当您不打算修改它时)将具有大致相同的性能,并允许您检查@987654327每个输入的@ 以确定您需要循环的内容。 -
计划A:用户
std::vector。 B 计划(如果你必须使用一维数组):根本不声明大小:void myfunction(double *array1,double *array2,double *array3,double *output1, double *output2) -
在编译时数组大小是否已知?以及如何计算输出长度?