You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现C++用户自定义二维数组的随机整数填充函数

解决动态二维数组填充随机整数的问题

首先得提一句:你当前代码里的int array1[i][o];是变长数组(VLA),这并不是C标准的一部分——虽然有些编译器(比如GCC)会提供扩展支持,但这种写法移植性很差,而且容易出现内存管理问题。更符合C规范的做法是用std::vector来创建动态二维数组,我们基于这个来实现填充函数。

下面是完整的实现方案:

完整代码示例

#include <iostream>
#include <ctime>
#include <vector>  // 必须包含这个头文件来使用vector
using namespace std;

// 完成你开头的填充函数:接收行列数和二维vector的引用,填充随机整数
void fill_array(int rows, int cols, vector<vector<int>>& arr) {
    // 先初始化随机数生成器,只需要在程序启动时调用一次
    static bool initialized = false;
    if (!initialized) {
        srand(time(nullptr));
        initialized = true;
    }

    // 遍历每一行每一列,填充随机数(这里示例是0到99的整数,你可以按需调整范围)
    for (int i = 0; i < rows; ++i) {
        for (int j = 0; j < cols; ++j) {
            arr[i][j] = rand() % 100;
        }
    }
}

int main() {
    int rows, cols;
    cout << "Ingress rows: ";
    cin >> rows;
    cout << "Ingress columns: ";
    cin >> cols;

    // 用vector创建动态二维数组,初始化所有元素为0
    vector<vector<int>> array1(rows, vector<int>(cols));

    // 调用填充函数
    fill_array(rows, cols, array1);

    // 可选:打印数组验证结果
    cout << "\nGenerated array:\n";
    for (const auto& row : array1) {
        for (int num : row) {
            cout << num << "\t";
        }
        cout << "\n";
    }

    return 0;
}

关键细节说明

  • 为什么用vector?:vector会自动管理内存,避免手动new/delete的内存泄漏问题,而且完全符合C++标准,移植性拉满。
  • 随机数初始化:把srand(time(nullptr))放在函数里用static变量控制只执行一次,避免多次调用函数导致随机数重复(如果在循环里多次调用fill_array的话)。
  • 函数参数:用vector<vector<int>>& arr传递引用,避免拷贝整个数组,提升效率。

如果你坚持要用原生数组(不推荐),那需要用动态分配的方式,比如int** array1 = new int*[rows];然后每行再分配内存,但这种写法需要手动释放内存,容易出错,还是vector更省心。

内容的提问来源于stack exchange,提问作者Nehuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:22:38