【问题标题】:What's the best way to fill multiDimensional Array填充多维数组的最佳方法是什么
【发布时间】:2021-05-20 03:09:47
【问题描述】:

我正在尝试找到用特定值填充 2D 数组的最佳方法。 有没有更好的方法来循环二维数组? 我试过 memset 不起作用我试过 std::fill 但我怀疑我的代码有问题。

void fillMultipleArray(int m, int n, int value)
{
    int grid[m][n];
    
    memset(grid, 0, sizeof(grid));
    
    
    for (int i = 0; i < m; i++) {
        
        for (int i = 0; i < n; i++) {
            
            std::cout << grid[m][n] << std::endl;
        }
    }    
}

输出

-272632896 -272632896 -272632896 -272632896 -272632896 -272632896 -272632896 -272632896

提前致谢

【问题讨论】:

  • @M.A 没有测试过,但是你确定不只是将第一个设置为 666 并将其余元素设置为 0 吗?
  • @mediocrevegetable1 是的,很好 :)
  • 不要修复问题中的代码,它会使发布的答案无效。
  • 顺便说一句,int grid[m][n];non-standard VLA

标签: c++ variable-length-array


【解决方案1】:

使用memset 没问题,而是仔细查看您的打印代码,它有多个错误

for (int i = 0; i< m; i++) {
    for (int i = 0; i< n; i++) {
        std::cout<< grid[m][n]<< std::endl;
    }
}

应该是这样的

for (int i = 0; i < m; i++) {
    for (int j = 0; j < n; j++) {
        std::cout<< grid[i][j] << std::endl;
    }
}

这是一个很好的教训,当输出错误时,可能是因为您的计算错误,但也可能是您打印的结果错误。尽量不要做太多假设。

【讨论】:

  • for (int j = 0; j
  • @ΦXocę웃Пepeúpaツ 是的,我已经修好了
  • 是的,我修复了代码打印,但它仍然给出同样的错误我也尝试了这个 memset 但仍然有同样的问题 memset(grid, 0, sizeof(int) m n);
  • 是的,如果试过 memset(grid, 0, sizeof(int) mn);
  • @youssefmyh 你知道int grid[m][n] ; 不是合法的C++ 吗?在 C++ 中,数组大小必须是常量,但 mn 是变量。
猜你喜欢
  • 2015-12-18
  • 1970-01-01
  • 2012-08-30
  • 1970-01-01
  • 2018-05-16
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多