map/multimap

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

#include <cstl/map.h>

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

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

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


CSTL_MAP_INTERFACE/CSTL_MULTIMAP_INTERFACEの引数のNameにMap, KeyTypeにKeyT, ValueTypeにValueTを指定した場合、 以下のインターフェイスを提供する。

Map

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

MapIterator

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

関数

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

生成
Map *Map_new(void);

破棄
void Map_delete(Map *self);

サイズ
size_t Map_size(Map *self);

int Map_empty(Map *self);

イテレータ
MapIterator Map_begin(Map *self);

MapIterator Map_end(Map *self);

MapIterator Map_rbegin(Map *self);

MapIterator Map_rend(Map *self);

MapIterator Map_next(MapIterator pos);

MapIterator Map_prev(MapIterator pos);

要素のアクセス
KeyT Map_key(MapIterator pos);

ValueT *Map_value(MapIterator pos);

ValueT *Map_lookup(Map *self, KeyT key);

挿入
MapIterator Map_insert(Map *self, KeyT key, ValueT value, int *success);

MapIterator Map_insert(Map *self, KeyT key, ValueT value);

int Map_insert_range(Map *self, MapIterator first, MapIterator last);

削除
MapIterator Map_erase(Map *self, MapIterator pos);

MapIterator Map_erase_range(Map *self, MapIterator first, MapIterator last);

size_t Map_erase_key(Map *self, KeyT key);

void Map_clear(Map *self);

交換
void Map_swap(Map *self, Map *x);

検索
size_t Map_count(Map *self, KeyT key);

MapIterator Map_find(Map *self, KeyT key);

MapIterator Map_lower_bound(Map *self, KeyT key);

MapIterator Map_upper_bound(Map *self, KeyT key);