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

如何在C++中初始化行列尺寸不同的二维vector?

在C++中初始化指定尺寸的二维vector

要在C++中创建指定行列数的二维vector,你需要调整构造函数的参数写法,核心是理解vector<vector<int>>的本质是「存储vector<int>的容器」,而非Java风格的连续二维数组。

正确的初始化写法

直接通过构造函数完成初始化:

int myFunction(string text1, string text2) {
    int rows = text1.size() + 1;
    int cols = text2.size() + 1;
    // 外层vector有rows个元素,每个元素是一个大小为cols的vector<int>
    vector<vector<int>> arr(rows, vector<int>(cols));
    
    // 后续逻辑...
}

为什么你的代码报错?

你之前的代码vector<vector<int>> arr(text1.size() + 1, text2.size() + 1);错误在于:

  • vector<vector<int>>的第二个构造参数需要是一个vector<int>类型的对象(作为外层每个元素的初始模板),而你直接传入了一个整数(列数),编译器找不到匹配的构造函数,因此抛出no matching constructor错误。

另一种初始化方式:分步resize

如果需要后续动态调整尺寸,也可以先创建空的外层vector,再逐个resize内层:

int myFunction(string text1, string text2) {
    int rows = text1.size() + 1;
    int cols = text2.size() + 1;
    vector<vector<int>> arr;
    arr.resize(rows); // 先设置外层的行数
    for (auto& row : arr) {
        row.resize(cols); // 给每一行设置列数
    }
    
    // 后续逻辑...
}

和Java写法的区别

Java中的int[][] arr = new int[m][n]是直接分配一块连续的内存空间作为二维数组;而C++的vector<vector<int>>是由多个独立的vector<int>组成的容器,每行的内存不一定连续,因此需要显式初始化每个内层vector的大小。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:15:20