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

C++中如何创建子数组长度各不相同的二维数组

C++实现不等长二维结构的方法

你在Python里用的嵌套列表是动态变长结构,C++里要实现同等效果优先用标准库的std::vector,原生静态数组要求编译期就固定所有维度长度,没法直接实现每行长度不同的需求。

对应你给出的Python示例,等效C++代码如下:

#include <vector>

int main() {
    const int layers = 3;
    std::vector<std::vector<int>> lst;
    for (int i = 1; i <= layers + 1; ++i) {
        // 每次追加长度为i、元素全初始化为0的子数组
        lst.emplace_back(i, 0);
    }
    return 0;
}

这段代码运行后得到的二维结构和Python运行结果完全一致:

[[0],
 [0, 0],
 [0, 0, 0],
 [0, 0, 0, 0]]

补充说明

  • 这种vector嵌套的写法会自动处理内存回收,不用手动申请释放内存,和Python列表的使用体验接近,访问元素直接用lst[行号][列号]就行,和Python的索引写法没有区别。
  • 硬要用原生C风格数组也能实现:先建一个存int指针的数组,给每个指针单独分配对应长度的堆内存存0,但这种写法用完得挨个释放所有内层数组和外层指针数组,稍不注意就会出现内存泄漏、野指针问题,没有特殊需求不推荐这么写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:12:24