【问题标题】:Zero out a section of a multidimensional array将多维数组的一部分归零
【发布时间】:2012-01-28 19:45:43
【问题描述】:

我有一个多维数组(矩阵的表示)。我需要清零,而不是整个数组,而是其中的一部分。这样做的最佳方法是什么?我尝试使用 memset,但它只是给我一个类型转换错误。

示例

_matrix[row][column] = memset(
                        _matrix[row][column], 
                        0, 
                        sizeof(_matrix[row][column])
                    );

声明

float** _matrix = new float*[NUM_ROWS][NUM_COL];

【问题讨论】:

  • 为什么要分配memset的结果?
  • 天啊。你应该考虑买一本关于 C/C++ 的好书
  • 您要清零的部分是什么?一排?柱子?行和列?
  • @Holland :他说一本的书。 ;-] 你在看哪本书?
  • OpenGL 红皮书可能是一本关于 OpenGL 的好书,但它不是一本学习 C++ 的好书。

标签: c++ pointers memory-management multidimensional-array


【解决方案1】:

memset() 的第一个参数是 address 的位置为零。所以:

memset(&_matrix[row][column], ...)

但是,在您的情况下,以下情况会更简单:

_matrix[row][column] = 0.0;

【讨论】:

    【解决方案2】:

    这被标记为 C++,但你并没有真正在做任何 C++。为什么不这样做呢?避免所有较低级别的 memset 和直接数组废话。

    我当然认为你应该接受前面的一些建议,并真正学习底层 C、内存访问等,但在 C++ 中,这可以简单地避免。

    一行代码让您快速上路:

    typedef std::vector<std::vector<int> > Array2D;
    

    【讨论】:

      猜你喜欢
      • 2019-04-04
      • 2015-09-04
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-25
      相关资源
      最近更新 更多