【发布时间】:2021-07-16 03:19:37
【问题描述】:
我一直在开发一个程序,我需要能够对二维数组中的行求和,该数组的列数是变量。我还应该补充一点,行“拆分” 为两部分(部分 A 和部分 B),其大小取决于用户输入。
我显然可以只使用 for 循环对一行求和,但我想要一个更优雅的解决方案,它也更容易在整个程序中设置。我偶然发现了数值库中的 accumulate 函数,但我能找到的所有示例都是专门针对一维数组的。
这是我的问题代码示例:
total = partNum[PART_A] + partNum[PART_B];
partStart[PART_A] = 0;
partEnd[FUNC_A] = partNum[PART_A];
partStart[PART_B] = partNum[PART_A];
partEnd[FUNC_B] = total;
double stat[5][total];
double mass_sum = 0.0
func = PART_A;
accumulate(stat[MASS][partStart[func]], stat[MASS][partStart[func]], mass_sum);
但是,我收到一个构建时错误,指出:
间接需要指针操作数('double'无效')
我认为这是一个语法错误,但改变我定义数组的开始和结束的方式并没有解决这个错误。
【问题讨论】:
-
您想要发生的事情并不完全清楚。您能否添加一个输入和所需输出的示例?
-
std::accumulate()的前两个参数是迭代器,它们指向范围的开始和(过去的)结束。您正在传递stat[MASS][partStart[func]](对于两个参数),它是数组的元素,而不是迭代器。 -
附带说明,
double stat[5][total]仅在total是const时才是有效的 C++,如果不是,则不能在此处使用total(如果它有效,它是一个 GCC 扩展)。
标签: c++ multidimensional-array accumulate