如何分别计算每行和每列的总和或乘积 在二维数组中。
答案 0 :(得分:1)
您需要具有相同数量元素的数组(或者您可以使用向量)来放置结果。
C ++ ish code:
template<class T>
vector<T> SumRows(T * array, unsigned int rows, unsigned int cols)
{
vector<T> sums;
for ( unsigned int i = 0; i < rows; i++ )
{
T sum = 0;
for ( unsigned int j = 0; j < cols; j++ )
{
sum += array[i][j];
}
sums.push_back(sum);
}
return sums;
}
我模仿它很有趣,但它依赖于具有=和+ =运算符的类型,并且可以赋予int常量。 使用指向第一个元素的指针(或只是使用数组),适当的类型和计数来调用该函数。例如:
int myArray[3][3];
vector<int> sums = SumRows<int>(myArray, 3, 3);
列总和的工作方式类似,只需反转for循环中的行和列位置。
答案 1 :(得分:0)
一种可能性是使用std::accumulate
,这是针对这种情况设计的。
我毫不犹豫地提到它,但C ++标准库提供了另一种可能性,更具体地设计用于此类用途。 std::valarray
重载了许多标准的数学运算符,使这类事情变得微不足道。问题在于它的文档记录很少,很少使用,即使它可以完成这项工作,但几乎任何使用valarray
至少会使代码模糊不清。