从文档中我知道Nim数组在编译时确定了固定长度,而seqs的长度可变。
我注意到seqs有更多的内置工具。例如,在sequtils
模块中,map
可以采用数组,但无论如何都会返回seq,而all
或any
不适用于数组。而且我没有看到将固定大小的seq转换为数组的简单方法。
所以我的问题是:使用数组有什么好处?它们提供更快的访问吗?
答案 0 :(得分:6)
Nim seq
实际上是指向动态数组的指针(由seq的长度和容量以及实际数据组成的两个单词)。
seq
需要另一级别的间接,额外的堆分配,并且还有额外的开销(存储长度和容量所需的内存,以及任何"浪费的"当前不存在的内存用过的)。因此,如果您确切知道需要多少内存,则可以使用数组而不是seq来节省时间和空间。