gpt4 book ai didi

c++ - 将静态二维数组的行传递给 C++ 中的函数

转载 作者:行者123 更新时间:2023-11-28 03:57:09 31 4
gpt4 key购买 nike

这是一个非常初级的问题。尽管如此,我在网上研究了数十个半相关示例后仍未找到解决方案。

我有一个二维 double 组,其大小在编译时已知:double demPMFs[ NUM_DEM_PARAMS ][ NUM_AGE_CATEGORIES ]。数组条目由程序早期的输入文件填充。我想将单独的行作为一维数组传递给程序后面的函数。理想情况下,我希望为每一行保留单独的名称:

#define LSPAN_PMF demPMFs[0][]
#define FLEDGE_PMF demPMFs[1][]
#define PAIR_PMF demPMFs[2][]
#define BIRTH_AGE_PMF demPMFs[3][]
#define SPLIT_AGE_PMF demPMFs[4][]

(这里,NUM_DEM_PARAMS = 5;)。以下是将行传递给函数的失败尝试:

int calcDeath( double demPMFs[][ NUM_AGE_CATEGORIES ] ) {
int age_death = rmultinom( LSPAN_PMF, NUM_AGE_CATEGORIES );
return age_death;
}

int rmultinom( const double p_trans[], int numTrans )
// ...[code snipped]...
}

我现在收到有关原型(prototype)的编译器错误;我预计 const 声明也会遇到问题。如果人们认为它们是相关的,我可以详细介绍错误,但我怀疑已经有很多问题需要纠正。

最佳答案

不使用array[index][],而是使用array[index]:

#define LSPAN_PMF demPMFs[0]
// ... etc.

但为什么要如此混淆使用数组呢?使用命名索引会更清楚:

enum {
IndexLspan,
IndexFledge,
// ...
};

int calcDeath( double demPMFs[][ NUM_AGE_CATEGORIES ] ) {
int age_death = rmultinom( demPMFs[IndexLspan], NUM_AGE_CATEGORIES );

继续,为什么不首先使用 C++ 标准库中的容器呢?

关于c++ - 将静态二维数组的行传递给 C++ 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3087822/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com