dijkstra 的书中对 array 这种对象进行了建模. 除去定义了一些运算外, 里面提到了一句.
不应该将 array 看作一堆数据连续存储, 而是看作一个
Fn(u32) -> T
深以为然, 下面是一些经典应用.
dfs 时的
vis[x][y]
Hashmap<u32, T>
的快速特化版.以及大部分
Vec::
with_capacity
还有
vec![0; 100010]
而连续存放生成的数据应该用
generator
+ yield
+ collect
再扯一句 table-driven
一个经典优化是, 会把 switch-case 优化成跳转表. 即地址的 offset
即
Hashmap<u32, Fn(T...) -> V>
, aka &[Fn(T...) -> V]