"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===dsjdsi 等于 dsj,则为True
    FullForm[ds]ds 的完全形式
    Information[ds]ds 的信息
    InputForm[ds]ds 的输入格式
    Normal[ds]ds 转换为普通表达式

范例

打开所有单元关闭所有单元

基本范例  (2)

可用 CreateDataStructure 创建新的 "ImmutableVector"

可追加元素:

返回长度:

原始向量的长度没有改变:

提取第一个元素:

替换元素:

ds1 保持不变:

ds2 的值被替换:

返回 ds 的表达式版本:

高效追加元素:

可生成数据结构的可视化表示:

对所有元素加和:

范围  (2)

效率  (1)

"ImmutableVector" 可高效追加元素:

正则列表表达式在追加运算上则没有这么快:

Association 进行追加运算也很快,但会给出一个密钥而非数据的索引视观表(index view):

信息  (1)

可使用 CreateDataStructure 创建新的 "ImmutableVector"

关于数据结构 ds 的信息: