C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++ STLのarray::at()関数の使い方を徹底解説

配列(array)とは、同じデータ型の要素を連続したメモリ領域に格納したコレクションです。

C++標準ライブラリ(STL)には、配列の操作をサポートするためのさまざまなメソッドが用意されています。その中の一つが array::at() メソッドです。

array::at() メソッドは、指定したインデックス位置にある要素への参照を返すために使用されます。

構文

array::at() 関数の一般的な構文は以下のとおりです。

array_name.at(i);

パラメータ

この関数は引数を1つだけ受け取ります。引数には、アクセスしたい要素のインデックスを指定します。

戻り値

関数を呼び出す際に渡されたインデックスに対応する要素を返します。もし無効なインデックス値(配列の範囲外の値)が渡された場合は、out_of_range 例外をスローします。

なお、[] 演算子と異なり、at() は範囲チェックを行うため、存在しないインデックスにアクセスしても未定義動作にならず、例外として検知できる点が特徴です。

サンプルコード1

array::at() 関数の基本的な動作を示すプログラム:

#include <bits/stdc++.h>
using namespace std;
int main(){
    array<float, 4> arr = { 12.1, 67.3, 45.0, 89.1 };
    cout << "The element at index 1 is " << arr.at(1) << endl;
    return 0;
}

出力結果

The element at index 1 is 67.3

このプログラムでは、float型の要素を4つ持つ配列を作成し、at(1) を使ってインデックス1の要素「67.3」を取得して表示しています。

サンプルコード2

配列の長さを超えるインデックス値を指定した場合のエラーを示すプログラム:

#include <bits/stdc++.h>
using namespace std;
int main(){
    array<float, 4> arr = { 12.1, 67.3, 45.0, 89.1 };
    cout << "The element at index 1 is " << arr.at(8) << endl;
    return 0;
}

出力結果

terminate called after throwing an instance of 'std::out_of_range'
what(): array::at: __n (which is 8) >= _Nm (which is 4)
The element at index 1 is Aborted

このプログラムでは、要素数が4の配列に対して at(8) を呼び出しているため、インデックスが範囲外となり、std::out_of_range 例外がスローされてプログラムが異常終了します。

まとめ

array::at() 関数は、指定したインデックスの要素へ安全にアクセスするための便利なメソッドです。範囲外アクセス時に例外をスローするため、デバッグや堅牢なコードを書く際に役立ちます。パフォーマンスが重視される場面では [] 演算子を使い、安全性を重視する場面では at() を使うなど、用途に応じて使い分けるとよいでしょう。

  1. C++ STLのcosh()関数とは?双曲線余弦の求め方をサンプルコード付きで解説

    cosh()関数とは? C++のSTLに組み込まれているcosh()関数は、ラジアン単位で与えられた角度の双曲線余弦(ハイパボリック・コサイン)を計算して返す関数です。使用するには、<cmath>ヘッダーをインクルードする必要があります。 双曲線余弦は、数学的に次の式で定義されます。 cosh(x) = (e^x + e^(-x)) / 2 構文 cosh()関数の構文は以下の通りです。 cosh(var) 構文から分かるように、cosh()関数はfloat型、double型、long double型のいずれかの引数varを受け取ります。そして、その双曲線余弦を返します。なお、引

  2. C++ STLのsinh()関数の使い方を徹底解説

    sinh()関数とはsinh()関数は、ラジアンで指定された値の双曲線正弦(ハイパボリックサイン)を返す関数です。C++のSTL(標準テンプレートライブラリ)に組み込まれており、<cmath>ヘッダをインクルードすることで利用できます。双曲線正弦は、以下の数式で定義されます。sinh(x) = (e^x − e^−x) / 2sinh()関数の構文sinh()関数の構文は以下のとおりです。sinh(var)構文からわかるように、sinh()関数はfloat型、double型、long double型のいずれかのパラメータvarを受け取ります。戻り値は、varの双曲線正弦です。sin