コンテナ

この節ではコンテナを規定する。コンテナとは、複数の値を格納することができる値である。この言語仕様では以下の 7 種類のコンテナを規定する。

比較器

比較器 (comparer) は値の大小を比較するコンティニュエーションである。セットコンテナまたはマップコンテナを生成するとき、比較器を指定することができる。比較器を指定しなければ lessmain プリミティブ演算が使われる。

比較器は left コンティニュエーション引数と right コンティニュエーション引数を受け取る。また、come from コンティニュエーション引数には終端コンティニュエーションが渡される。比較器は、終端要因が終端コンティニュエーションであり、main 引数の値が true または false である引数解決で終了する必要がある。left コンティニュエーション引数が right コンティニュエーション引数よりも小さければ true を、そうでなければ false を、終端コンティニュエーションの main 引数で返す必要がある。

トリビアルコンテナ

トリビアルコンテナは、1 個の値を格納することができるコンテナである。

make trivial containermain プリミティブ演算はトリビアルコンテナを返す。トリビアルコンテナは明示寿命カプセルである。

トリビアルコンテナは以下のメソッドディスクリプターを使用できる。

メソッドディスクリプター 引数とその型 戻り値の型
typemain main (ベクトル) ブーリアン
mutablemain なし ブーリアン
getmain なし 任意の値
setmain main (任意の値) なし

type メソッドは main 引数が trivial containermain 有名ベクトルであれば true を返す。

mutable メソッドは true を返す。

get メソッドはトリビアルコンテナに格納されている値を返す。トリビアルコンテナが生成されてから、何らかの値が格納されるまでの間に get メソッドを使用した場合の動作は、実装により異なる。

set メソッドは指定された値をトリビアルコンテナに格納する。

イミュータブルベクターコンテナ

make immutable vector containermain プリミティブ演算は空のイミュータブルベクターコンテナを返す。イミュータブルベクターコンテナは暗黙寿命カプセルである。

結合演算子の左辺がイミュータブルベクターコンテナであるとき、左辺のイミュータブルベクターコンテナの末尾に右辺の値を追加したイミュータブルベクターコンテナを生成して返す。

イミュータブルベクターコンテナは以下のメソッドディスクリプターを使用できる。

メソッドディスクリプター 引数とその型 戻り値の型
typemain main (ベクトル) ブーリアン
mutablemain なし ブーリアン
to stringmain なし 文字列
sizemain なし 自然数
getmain index (自然数) 任意の値
sortmain main (比較器) イミュータブルベクターコンテナ

type メソッドは main 引数が vector containermain 有名ベクトルであれば true を返す。

mutable メソッドは false を返す。

to string メソッドは文字列を返す。このメソッドを使用するには、イミュータブルベクターコンテナの各要素が 1 以上 256 未満の自然数である必要がある。そうでない場合の動作は実装により異なる。

get メソッドは指定されたインデックスの値を返す。範囲外のインデックスが指定された場合の動作は実装により異なる。

sort メソッドはベクターコンテナをソートする。このメソッドは、もとのイミュータブルベクターコンテナを変更することなく、新しいイミュータブルベクターコンテナを生成して返す。

他のメソッドは STL の同名のメンバー関数に従う。

ベクターコンテナ

make vector containermain プリミティブ演算は空のベクターコンテナを返す。ベクターコンテナは明示寿命カプセルである。ベクターコンテナは以下のメソッドディスクリプターを使用できる。

メソッドディスクリプター 引数とその型 戻り値の型
typemain main (ベクトル) ブーリアン
mutablemain なし ブーリアン
copymain なし ベクターコンテナ
assignmain main (イミュータブルベクターコンテナ) なし
assignmain main (ベクターコンテナ) なし
assignmain main (文字列) なし
to immutablemain なし イミュータブルベクターコンテナ
to stringmain なし 文字列
sizemain なし 自然数
resizemain 自然数 なし
getmain main (自然数) 任意の値
setmain index (自然数), value (任意の値) なし
push backmain main (任意の値) なし
pop backmain なし なし
clearmain なし なし
sortmain main (比較器) なし

type メソッドは main 引数が vector containermain 有名ベクトルであれば true を返す。

mutable メソッドは true を返す。

copy メソッドはベクターコンテナのコピーを作成して返す。

assign メソッドはベクターコンテナの内容を置き換える。

to immutable メソッドはイミュータブルベクターコンテナを返す。

to string メソッドは文字列を返す。このメソッドを使用するには、ベクターコンテナの各要素が 1 以上 256 未満の自然数である必要がある。そうでない場合の動作は実装により異なる。

get メソッドは指定されたインデックスの値を返す。範囲外のインデックスが指定された場合の動作は実装により異なる。

set メソッドは指定されたインデックスに値を格納する。範囲外のインデックスが指定された場合の動作は実装により異なる。

sort メソッドはベクターコンテナをソートする。

他のメソッドは STL (Standard Template Library) の同名のメンバー関数に従う。

イミュータブルセットコンテナ

make immutable set containermain プリミティブ演算は空のイミュータブルセットコンテナを返す。このプリミティブ演算の main 引数は省略可能で、省略しないならば比較器である必要がある。イミュータブルセットコンテナは暗黙寿命カプセルである。

結合演算子の左辺がイミュータブルセットコンテナであるとき、左辺のイミュータブルセットコンテナに右辺の値を追加したイミュータブルセットコンテナを生成して返す。

イミュータブルセットコンテナは以下のメソッドディスクリプターを使用できる。

メソッドディスクリプター 引数とその型 戻り値の型
typemain main (ベクトル) ブーリアン
mutablemain なし ブーリアン
beginmain なし イテレーター
endmain なし イテレーター
sizemain なし 自然数
findmain main (任意の値) イテレーター

type メソッドは main 引数が set containermain 有名ベクトルであれば true を返す。

mutable メソッドは false を返す。

他のメソッドは STL の同名のメンバー関数に従う。

セットコンテナ

make set containermain プリミティブ演算は空のセットコンテナを返す。このプリミティブ演算の main 引数は省略可能で、省略しないならば比較器である必要がある。セットコンテナは明示寿命カプセルである。セットコンテナは以下のメソッドディスクリプターを使用できる。

メソッドディスクリプター 引数とその型 戻り値の型
typemain main (ベクトル) ブーリアン
mutablemain なし ブーリアン
copymain なし セットコンテナ
assignmain main (イミュータブルセットコンテナ) なし
assignmain main (セットコンテナ) なし
to immutablemain なし イミュータブルセットコンテナ
beginmain なし イテレーター
endmain なし イテレーター
sizemain なし 自然数
insertmain main (任意の値) なし
erasemain main (任意の値) なし
clearmain なし なし
findmain main (任意の値) イテレーター

type メソッドは main 引数が set containermain 有名ベクトルであれば true を返す。

mutable メソッドは true を返す。

copy メソッドはセットコンテナのコピーを作成して返す。

assign メソッドはセットコンテナの内容を置き換える。

to immutable メソッドはイミュータブルセットコンテナを返す。

他のメソッドは STL の同名のメンバー関数に従う。

イミュータブルマップコンテナ

get immutable map containermain プリミティブ演算は空のイミュータブルマップコンテナを返す。このプリミティブ演算の main 引数は省略可能で、省略しないならば比較器である必要がある。イミュータブルマップコンテナは暗黙寿命カプセルである。

マップ演算子は、左辺をキー、右辺をバリューとする 1 要素のイミュータブルマップコンテナを返す。比較器はデフォルトのものが使われる。

結合演算子の左辺と右辺がイミュータブルマップコンテナであるとき、これらを結合したイミュータブルマップコンテナを返す。このとき、比較器は左辺のものが使われる。

イミュータブルマップコンテナは以下のメソッドディスクリプターを使用できる。

メソッドディスクリプター 引数とその型 戻り値の型
typemain main (ベクトル) ブーリアン
mutablemain なし ブーリアン
beginmain なし イテレーター
endmain なし イテレーター
sizemain なし 自然数
getmain key (任意の値) 任意の値
findmain main (任意の値) イテレーター

type メソッドは main 引数が map containermain 有名ベクトルであれば true を返す。

mutable メソッドは true を返す。

get メソッドは指定されたキーに対応する値を返す。指定されたキーが使用されていない場合の動作は実装により異なる。

set メソッドは指定されたキーに値を格納する。指定されたキーがすでに使用されている場合は、値を上書きする。指定されたキーが使用されていない場合は、キーと値を追加する。

他のメソッドは STL の同名のメンバー関数に従う。

マップコンテナ

get map containermain プリミティブ演算は空のマップコンテナを返す。このプリミティブ演算の main 引数は省略可能で、省略しないならば比較器である必要がある。マップコンテナは明示寿命カプセルである。マップコンテナは以下のメソッドディスクリプターを使用できる。

メソッドディスクリプター 引数とその型 戻り値の型
typemain main (ベクトル) ブーリアン
mutablemain なし ブーリアン
copymain main (マップコンテナ) マップコンテナ
assignmain main (イミュータブルマップコンテナ) なし
assignmain main (マップコンテナ) なし
to immutablemain なし イミュータブルマップコンテナ
beginmain なし イテレーター
endmain なし イテレーター
sizemain なし 自然数
getmain key (任意の値) 任意の値
setmain key (任意の値), value (任意の値) なし
erasemain main (任意の値) なし
clearmain なし なし
findmain main (任意の値) イテレーター

type メソッドは main 引数が map containermain 有名ベクトルであれば true を返す。

mutable メソッドは true を返す。

copy メソッドはセットコンテナのコピーを作成して返す。

assign メソッドはセットコンテナの内容を置き換える。

to immutable メソッドはイミュータブルマップコンテナを返す。

get メソッドは指定されたキーに対応する値を返す。指定されたキーが使用されていない場合の動作は実装により異なる。

set メソッドは指定されたキーに値を格納する。指定されたキーがすでに使用されている場合は、値を上書きする。指定されたキーが使用されていない場合は、キーと値を追加する。

他のメソッドは STL の同名のメンバー関数に従う。

イテレーター

イテレーターは暗黙寿命カプセルである。イテレーターは以下のメソッドディスクリプターを使用できる。

メソッドディスクリプター 引数とその型 戻り値の型
typemain main (ベクトル) ブーリアン
copymain main (イテレーター) イテレーター
assignmain main (イテレーター) なし
getmain なし 任意の値
get keymain なし 任意の値
get valuemain なし 任意の値
set valuemain 任意の値 なし
go forwardmain なし なし
go backmain なし なし
{=} main (イテレーター) ブーリアン

type メソッドは main 引数の値が iteratormain であれば true を返す。

copy メソッドはイテレーターのコピーを返す。

assign メソッドはイテレーターの内容を main 引数のものに置き換える。

get メソッドはイテレーターがイミュータブルセットコンテナまたはセットコンテナに属する場合に使用できる。

get key, get value メソッドはイテレーターがイミュータブルマップコンテナに属する場合に使用できる。get key, get value, set value メソッドはイテレーターがマップコンテナに属する場合に使用できる。

go forward メソッドと go back メソッドはイテレーターを進めるか戻す。

他のメソッドは STL の同名のメンバー関数に従う。