コンピュータ サイエンスでは、「範囲」という用語は次の 3 つのいずれかを指します。
変数の範囲
変数の値域は、その変数が保持できる値の集合として定義されます。整数の場合、変数の定義は整数のみに制限され、その範囲は範囲内のすべての数値(最大値と最小値を含む)をカバーします。例えば、符号付き16ビット整数変数の値域は、-32,768から+32,767までのすべての整数です。
配列の範囲
配列が数値インデックスで指定されている場合、その範囲は配列の上限と下限になります。環境によっては、プログラムが範囲外の配列要素にアクセスしようとすると、警告、致命的な例外、または予期しない動作が発生することがあります。C などの一部のプログラミング言語では、配列の下限は固定されており(ゼロ)、上限までの各位置にデータが格納されます(つまり、要素が 5 つある配列の範囲は 0 から 4 になります)。PHP などの他のプログラミング言語では、配列に要素が定義されていない部分がある場合があり、そのため範囲が 0 から 4 の配列には最大5 つの要素(最小 2 つ)が含まれます。
イテレータの代替としての範囲
コンピュータサイエンスにおけるrangeの別の意味は、 iteratorの代替です。この意味で使われる場合、range は「begin/end イテレータのペアをまとめてパックしたもの」と定義されます。[ 1 ] 「範囲は(イテレータと比較して)優れた抽象化である」という主張があります。これには安全性の向上など、いくつかの理由があります。 [ 1 ]
特に、このような範囲はC++20、[ 2 ] Boost C++ライブラリ[ 3 ]およびD標準ライブラリでサポートされています。[ 4 ]
データ型としての範囲

範囲のデータ型はジェネリックを使用して実装できます。
C#の例。
パブリックレコードRange < T > ( T Start 、T End ) 、ここでT : IComparable ;Kotlinの例。
データクラスRange < T : Comparable < T >> ( val start : T , val end : T )PHPの例。
読み取り専用クラスRange < T > { public関数__construct ( public T $start , public T $end , ) {} }Pythonの例。
データクラスからデータクラスをインポート@dataclassクラス範囲[ T ]:開始: T終了: TRustには標準ライブラリに組み込みの範囲構造体がありますstd::ops::Range。[ 5 ] C++std::rangesにもC++20以降にライブラリがあります。[ 6 ]
演算子としての範囲
Rustには..演算子と..=演算子があります。
let heartwarming = "heartwarming!" .to_string ( ); let warm = & heartwarming [ 5 .. 9 ];Zigには..演算子もあります。
// 連続する整数を反復処理するには、範囲構文を使用します。var sum : usize = 0 ; for ( 0 .. 5 ) | i | { sum += i ; }文字列[] items = [ "1" , "2" , "3" , "4" ];文字列[] firstThreeItems = items [ 0 . .2 ];[ 1 .. 4 ] // 出力: [1; 2; 3; 4]for ( i in 1. . 5 ) print ( i )( 1 .. 5 )の場合{印刷}PythonとPHPには範囲演算子はありませんが、range関数はあります。[ 11 ] [ 12 ]
参照
参考文献
- ^ a b Andrei Alexandrescu (2009年5月6日). 「Iterators Must Go」(PDF) . BoostCon 2009. 2014年7月29日閲覧。
- ^ cppreference
- ^ Boost.Range ドキュメント
- ^ D Phobos ランタイムライブラリ std.range モジュール
- ^ 「Range in std::ops - Rust」 . doc.rust-lang.org . 2024年10月17日閲覧。
- ^ 「Rangesライブラリ(C++20以降)」 cppreference.com . 2024年9月11日閲覧。
- ^ BillWagner (2023年11月14日). 「インデックスと範囲を使用してデータの範囲を調べる - C#」 . learn.microsoft.com . 2025年2月22日閲覧。
- ^ 「範囲演算子」 . F# by example . 2023年2月17日. 2025年2月22日閲覧。
- ^ 「範囲と進行 - Kotlin」 . Kotlinヘルプ. 2025年2月22日閲覧。
- ^ "perlop - Perl式:演算子、優先順位、文字列リテラル - Perldocブラウザ" . perldoc.perl.org . 2025年2月22日閲覧。
- ^ 「組み込み関数」 . Pythonドキュメント. Pythonソフトウェア財団. 2024年12月17日閲覧。
- ^ 「PHP: range - マニュアル」 . PHPドキュメンテーショングループ. 2024年12月17日閲覧。