gpt4 book ai didi

c++ - 我想以特定方式在C++中声明类似金字塔的结构,但是不能

转载 作者:行者123 更新时间:2023-12-01 14:52:40 26 4
gpt4 key购买 nike

我本质上是在尝试声明这样的内容,但由于“初始化变量太多”而无法执行。

int** a = { {1},{2,3},{3,4,5} };

附带的问题是,如果要对它进行一些细微的修改,它的大小是9(3x3)还是6(1 + 2 + 3)?

我可以使用以下 vector 实现这种行为,但我很好奇为什么我不能更直接地做到这一点。
vector<int*>a = vector<int*>();
for (int i = 0; i < 20; i++)
{
a.push_back(new int[i]);
for (int j = 0; j <= i; j++)
a[i][j] = i+j;
}

最佳答案

与动态使用new相比,在C++中静态使用双指针具有不同的内存安排。不同之处在于,静态**在编译时会自动占用连续内存,而动态**不会。静态多维数组连续存储,如here所述。

相关:我的问题here

由于数组不能连续存储,因此不能静态声明。

关于c++ - 我想以特定方式在C++中声明类似金字塔的结构,但是不能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61898077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com