Types
DualSegmentTree[S; F; p] = ref object data: seq[S] lazy: seq[F] hasLazy: seq[bool] lastnode: int log: int length: int
- Source Edit
Procs
proc `$`[ST: DualSegmentTree](self: ST): string
- 全要素を空白区切りの文字列として返します。 Source Edit
proc `[]=`[ST: DualSegmentTree](self: ST; index: Natural; value: ST.S)
- indexの値をvalueに置き換えます。 Source Edit
proc `[]`[ST: DualSegmentTree](self: ST; index: BackwardsIndex): ST.S
- 後ろから数えたindexの現在値を返します。 Source Edit
proc `[]`[ST: DualSegmentTree](self: ST; index: int): ST.S
- indexの現在値を返します。 Source Edit
proc apply[ST: DualSegmentTree](self: ST; left, right: int; f: ST.F)
- 半開区間[left, right)の各要素にfを作用させます。 Source Edit
proc apply[ST: DualSegmentTree](self: ST; segment: HSlice[int, int]; f: ST.F)
- 閉区間segmentの各要素にfを作用させます。 Source Edit
proc get[ST: DualSegmentTree](self: ST; index: int): ST.S
- indexの現在値を返します。 Source Edit
proc len[ST: DualSegmentTree](self: ST): int
- 要素数を返します。 Source Edit
proc toSeq[ST: DualSegmentTree](self: ST): seq[ST.S]
- 全要素をseqとして返します。 Source Edit
proc update[ST: DualSegmentTree](self: ST; index: Natural; value: ST.S)
- indexの値をvalueに置き換えます。 Source Edit
Iterators
iterator items[ST: DualSegmentTree](self: ST): ST.S
- Source Edit
Templates
template initDualSegmentTree[S, F](n: int; initValue: S; mapping: untyped; composition: untyped; id: F): untyped
- initValueで初期化した長さnの静的な作用関数を持つ双対セグメント木を生成します。 Source Edit
template initDualSegmentTree[S, F](v: openArray[S]; mapping: untyped; composition: untyped; id: F): untyped
- vを初期値として静的な作用関数を持つ双対セグメント木を生成します。 Source Edit
template newDualSegWith(n, initValue, mapping, composition, id: untyped): untyped
- Source Edit
template newDualSegWith(v, mapping, composition, id: untyped): untyped
- Source Edit