- 主题:咋能把n维数组定义出来,在堆中分配空间
然后还能用脚标去赋值?
a[i][j]=x;
--
FROM 221.216.116.*
直接new不行么
【 在 zhanghaoX 的大作中提到: 】
: 然后还能用脚标去赋值?
: a[i][j]=x;
--
FROM 223.101.88.*
内存的地址空间是一维、线性的,多维数组只是一维的一个逻辑视图。
假如堆上有8字节的连续内存,你可以视为1 x 8的二维视图、2 x 4的二维视图,或者8 x 1、4 x 2的也行,
或者2 x 2 x 2、1 x 2 x 4等等的三维视图。
物理存储(8字节的连续内存)和每种逻辑视图(n维数组)之间存在一一映射,只要规定行优先还是列优先就行,C/C++语言已经规定了哪个维度的下标优先了。
--
修改:z16166 FROM 114.254.46.*
FROM 114.254.46.*
std::mdspan专门干这个,把一维数组映射成多维view。
【 在 zhanghaoX 的大作中提到: 】
: 然后还能用脚标去赋值?
:
: a\[i\]\[j\]=x;
: --
:
发自「今日水木 on 钛星」
--
FROM 223.104.40.*
【 在 zhanghaoX 的大作中提到: 】
: 然后还能用脚标去赋值?
: a[i][j]=x;
二维数组还算不太难实现,但非搞成多维数组的写法可能比较麻烦,换个样子
a(i, j, k) = x 实现会容易很多
--
FROM 211.145.67.*
可以这么写?
。
【 在 leslin 的大作中提到: 】
: 【 在 zhanghaoX 的大作中提到: 】
: : 然后还能用脚标去赋值?
: : a[i][j]=x;
: ...................
--
FROM 221.218.139.*
【 在 zhanghaoX 的大作中提到: 】
: 可以这么写?
: 。
重载下括号就行了
c++23 里考虑允许重载的[] 里面允许多个参数了,以后会有 a[1, 2, 3] 这种语法,而且里面的逗号不是操作符
--
FROM 211.145.67.*