set/multiset

set/multisetを使うには、set.hというヘッダファイルをインクルードする。

#include <cstl/set.h>

以下のマクロを用いてコードを展開する必要がある。

Nameに既存の型と重複しない任意の名前を、Typeに任意の要素の型を指定する。

Compareに要素の比較ルーチンを指定する。


CSTL_SET_INTERFACE/CSTL_MULTISET_INTERFACEの引数のNameにSet, TypeにTを指定した場合、 以下のインターフェイスを提供する。

Set

コンテナの型。抽象データ型となっており、以下の関数によってのみアクセスできる。

SetIterator

イテレータの型。要素の位置を示す。 関数から返されたイテレータを有効なイテレータという。 宣言されただけのイテレータ、または削除された要素のイテレータを無効なイテレータという。

関数

以下の関数において、Set*型の引数はNULLでないことを事前条件に含める。

生成
Set *Set_new(void);

破棄
void Set_delete(Set *self);

サイズ
size_t Set_size(Set *self);

int Set_empty(Set *self);

イテレータ
SetIterator Set_begin(Set *self);

SetIterator Set_end(Set *self);

SetIterator Set_rbegin(Set *self);

SetIterator Set_rend(Set *self);

SetIterator Set_next(SetIterator pos);

SetIterator Set_prev(SetIterator pos);

要素のアクセス
T Set_key(SetIterator pos);

挿入
SetIterator Set_insert(Set *self, T elem, int *success);

SetIterator Set_insert(Set *self, T elem);

int Set_insert_range(Set *self, SetIterator first, SetIterator last);

削除
SetIterator Set_erase(Set *self, SetIterator pos);

SetIterator Set_erase_range(Set *self, SetIterator first, SetIterator last);

size_t Set_erase_key(Set *self, T elem);

void Set_clear(Set *self);

交換
void Set_swap(Set *self, Set *x);

検索
size_t Set_count(Set *self, T elem);

SetIterator Set_find(Set *self, T elem);

SetIterator Set_lower_bound(Set *self, T elem);

SetIterator Set_upper_bound(Set *self, T elem);