範囲型の概要については8.17をご覧ください。
表 9.55に、範囲型専用に利用可能な演算子を示します。 表 9.56に、多重範囲(multirange)型専用に利用可能な演算子を示します。 これらに加えて表 9.1で示す通常の比較演算子が範囲型と多重範囲型で利用できます。 この比較演算子は最初に範囲の下限で順序付けし、それが等しい場合にのみ上限を比較します。 多重範囲型の演算子は各範囲を、等しくならなくなるまで比較します。 これは通常有用な全順序付けにはなりませんが、範囲に対して一意インデックスを構成することができる演算子が提供されます。
表9.55 範囲演算子
演算子 説明 例 |
---|
最初の範囲は2番目を含んでいるか?
|
範囲はその要素を含んでいるか?
|
最初の範囲は2番目に含まれるか?
|
その要素は範囲に含まれるか?
|
範囲は重なり合っているか?すなわち共通の要素があるか?
|
最初の範囲は厳密に2番目の左か?
|
最初の範囲は厳密に2番目の右か?
|
最初の範囲は2番目の右を被覆していないか?
|
最初の範囲は2番目の左を被覆していないか?
|
範囲は隣接しているか?
|
範囲の和を計算します。範囲は和の結果が単一の範囲になるように、重なり合っているか、隣接していなければなりません。(ただし
|
範囲の共通部分を計算します。
|
範囲の差を計算します。 差が単一の範囲にならないように、2番目の範囲は最初の範囲に含まれていてはいけません。
|
表9.56 多重範囲演算子
演算子 説明 例 |
---|
最初の多重範囲は2番目を含んでいるか?
|
多重範囲は範囲を含んでいるか?
|
多重範囲は要素を含んでいるか?
|
範囲は多重範囲を含んでいるか?
|
最初の多重範囲は2番目に含まれているか?
|
多重範囲は範囲に含まれているか?
|
範囲は多重範囲に含まれているか?
|
要素は多重範囲に含まれているか?
|
多重範囲は重なっているか?すなわち、共通に持つ要素があるか?
|
多重範囲は範囲と重なり合うか?
|
範囲は多重範囲と重なり合うか?
|
最初の多重範囲は厳密に2番目の左か?
|
多重範囲は厳密に範囲の左か?
|
範囲は厳密に多重範囲の左か?
|
最初の多重範囲は厳密に2番目の右か?
|
多重範囲は厳密に範囲の右か?
|
範囲は厳密に多重範囲の右か?
|
最初の多重範囲は2番目の右を被覆していないか?
|
多重範囲は範囲の右を被覆していないか?
|
範囲は多重範囲の右を被覆していないか?
|
最初の多重範囲は2番目の左を被覆していないか?
|
多重範囲は範囲の左を被覆していないか?
|
範囲は多重範囲の左を被覆していないか?
|
それらの多重範囲は隣接しているか?
|
多重範囲は範囲に連接しているか?
|
範囲は多重範囲に連接しているか?
|
多重範囲の和を計算します。 多重範囲は重なり合っている必要も、隣接している必要もありません。
|
多重範囲の間の共通部分を計算します。
|
多重範囲の間の差を計算します。
|
空の範囲あるいは多重範囲が含まれる場合、「左」「右」「隣接」演算子は常に偽を返します。つまり、空の範囲は他の範囲の前でも後ろでもないと見なされます。
他の場所では、空の範囲と多重範囲は加法単位元として扱われます。 空の値との和は自分自身です。 空の値を引いたものは自分自身です。 空の多重範囲は空の範囲と正確に同じ特徴を持ちます。 すべての範囲は空の範囲を含みます。 すべての多重範囲はいくらでも空の範囲を含むことができます。
範囲の和と差演算子は、結果の範囲に2つの隣接しない副範囲が含まれる場合には失敗します。 そのような範囲は表現できないからです。 多重範囲引数を取り、多重範囲を返す別の和と差の演算子があり、引数が隣接していなくても失敗しません。 隣接しないかもしれない範囲の和あるいは差の演算が必要なら、まず範囲を多重範囲にキャストすることによってエラーを避けることができます。
表 9.57に範囲型で利用可能な関数を示します。 表 9.58に多重範囲型で利用可能な関数を示します。
表9.57 範囲関数
表9.58 多重範囲関数
lower_inc
、upper_inc
、lower_inf
、upper_inf
はすべて空の多重範囲に対して偽を返します。