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
相关产品推荐
相关产品推荐

