src/cplib/collections/dualsegtree_static_op

  Source   Edit

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