algo — C++23 日本語リファレンス GitHub

OrderedSet

クラス · 順序集合・多重集合(AVL 木)

template <class T, bool Multi = false>
struct OrderedSet;

概要

順序集合・多重集合(AVL 木)

計算量

構築・破棄

名前 説明 計算量
(constructor) (1) 空集合を構築する
(2) 列vの要素から構築する
(1) $O(1)$
(2) $O(n\log n)$

メンバ関数

名前 説明 計算量
empty 空か返す $O(1)$
size 要素数を返す $O(1)$
insert valを挿入する $O(\log n)$
erase valを1個削除する $O(\log n)$
pop_front 最小要素を削除する $O(\log n)$
pop_back 最大要素を削除する $O(\log n)$
front 最小要素を返す $O(\log n)$
back 最大要素を返す $O(\log n)$
at 0-indexedでk番目に小さい要素を返す $O(\log n)$
count valの個数を返す $O(\log n)$
contains valを含むか返す $O(\log n)$
lower_bound val未満の要素数を返す $O(\log n)$
upper_bound val以下の要素数を返す $O(\log n)$
floor val以下で最大の要素を返す $O(\log n)$
ceil val以上で最小の要素を返す $O(\log n)$
prefix_sum 小さい方からk個の総和を返す $O(\log n)$
suffix_sum 大きい方からk個の総和を返す $O(\log n)$

メンバ型

名前 説明 計算量
node_type 内部ノード型 型エイリアスで実行時計算量はない
node_ptr 内部ノードへのpointer型 型エイリアスで実行時計算量はない

メンバの詳細

(constructor)

// (1)
constexpr OrderedSet();

// (2)
constexpr OrderedSet(std::vector<T> v);

(1) 空集合を構築する

(2) 列vの要素から構築する