"ImmutableVector" (数据结构)
"ImmutableVector"
表示一个不可变向量,对该向量的修改会生成一个新的数据结构且元素为一般表达式.
更多信息
- 不可变向量可在不原地修改数据结构的情况下有效添加和移除元素.
- 不可变向量使用结构共享,使其拥有性能界限保证.
-
CreateDataStructure["ImmutableVector"] 创建新的空 "ImmutableVector" CreateDataStructure["ImmutableVector",elems] 创建包含 elems 的新 "ImmutableVector" Typed[x,"ImmutableVector"] 赋予 x 的类型为 "ImmutableVector" - 对于类型 "ImmutableVector" 的数据结构,可使用下列操作:
-
ds["Append",x] 返回将 x 追加到 ds 上的新不可变向量 时间:O(log n) ds["DropLast"] 返回删除了 ds 最后一个元素的新的不可变向量 时间:O(log n) ds["Elements"] 返回 ds 的元素列表 时间:O(n) ds["EmptyQ"] 若 ds 没有元素,则为True 时间:O(1) ds["Fold",fun,init] 将 fun 应用于 ds 的以 init 开始的元素,并累计结果 时间:O(n) ds["JoinBack",elems] 将 elems 添加到 ds 的末端 时间:O(nelems) ds["Length"] 存储在 ds 中的元素数量 时间:O(1) ds["Part",i] 给出 ds 的第 i 个部分 时间:O(log n) ds["ReplacePart",i,x] 返回第 i 个部分被 x 替换的新的不可变向量 时间:O(log n) ds["Visualization"] 返回 ds 的可视化 时间:O(n) - 也支持以下函数:
-
dsi===dsj 若 dsi 等于 dsj,则为True FullForm[ds] ds 的完全形式 Information[ds] ds 的信息 InputForm[ds] ds 的输入格式 Normal[ds] 将 ds 转换为普通表达式
范例
打开所有单元关闭所有单元基本范例 (2)
可用 CreateDataStructure 创建新的 "ImmutableVector":
范围 (2)
效率 (1)
Association 进行追加运算也很快,但会给出一个密钥而非数据的索引视观表(index view):
信息 (1)
可使用 CreateDataStructure 创建新的 "ImmutableVector":