难以找到2D vector 的总和。这样看起来还好吗?

int sumOfElements(vector<iniMatrix> &theBlocks)
{
  int theSum = 0;

  for(unsigned i=0; (i < theBlocks.size()); i++)
  {
    for(unsigned j=0; (j < theBlocks[i].size()); j++)
    {
        theSum +=theBlocks[i][j];
    }
  }

  return theSum;
}

它返回一个负数,但是,它应该返回一个正数。

希望有人可以帮助:)

最佳答案

从抽象的 Angular 来看,该代码看起来正确,但是您可能正在溢出theSum。您可以尝试将theSum类型设置为double,以查看所获得的值,以帮助整理出正确的整数类型以供使用。

double sumOfElements(vector<iniMatrix> &theBlocks)
{
  double theSum = 0;
  /* ... */
  return theSum;
}

当观察返回的值时,可以看到它是否适合int,或者是否需要使用更宽的longlong long类型。

如果矩阵中的所有值均为正,则应考虑使用无符号整数类型之一。这会使您的允许值范围加倍。

10-06 14:33