【C++】STLのstd::arrayの使い方について詳しく解説

std::arrayは、固定長の配列を扱うためのコンテナです。

この記事では、初心者でもわかりやすくstd::arrayの使い方について詳しく解説します。

目次から探す

std::arrayとは何か

std::arrayは、C++11から導入されたSTL(Standard Template Library)の一部であり、固定長の配列を表現するために使用されます。

std::arrayでは宣言時に要素数を指定し、その後変更することができません。

また、std::arrayは他のSTLコンテナと同様にイテレーターをサポートしており、範囲ベースのforループなどで簡単に要素を取り出すことができます。

例えば以下のように宣言します。

#include <array>

std::array<int, 5> arr = {1, 2, 3, 4, 5};

この場合、int型の要素を5つ持つ配列が作成されます。また、初期化子リストを使用して値を代入しています。初期化子リストは省略可能ですが、省略した場合は全て0で初期化されます。

std::arrayの宣言方法

C++のSTLに含まれるstd::arrayは、固定長の配列を扱うためのコンテナです。std::arrayを使用することで、配列のサイズを宣言時に指定し、その後変更することができなくなります。

std::arrayの宣言方法は以下のようになります。

#include <array>

std::array<int, 5> myArray; // int型要素を5つ持つ配列を宣言

上記の例では、int型要素を5つ持つ配列を宣言しています。<int, 5>は、int型要素を5つ持つ配列であることを示しています。また、myArrayはこの配列の名前です。

また、std::arrayは他のSTLコンテナ同様にイテレーターもサポートしており、以下のように使用することができます。

#include <iostream>
#include <array>

int main() {
    std::array<int, 3> myArray = {1, 2, 3};

    for (auto it = myArray.begin(); it != myArray.end(); ++it) {
        std::cout << *it << " ";
    }

    return 0;
}
1 2 3

上記の例では、イテレーターを使用してmyArray内の全ての要素を出力しています。

std::arrayの要素へのアクセス方法

std::arrayは、従来のC言語の配列の上位版とも言えるクラスであり、安全かつ簡単に配列を扱うことができます。

std::arrayの要素へのアクセス方法は、従来のC言語の配列と同様に、添字演算子[]を使用する方法を使えます。例えば、以下のようなstd::arrayがあった場合、

#include <array>

int main()
{
    std::array<int, 5> arr = {1, 2, 3, 4, 5};
    return 0;
}

arr[0]1arr[1]2arr[2]は3、arr[3]4arr[4]5となります。

また、at()関数を使用することでも要素へアクセスすることができます。at()関数では範囲外アクセス時に例外が発生するため、try-catchを使用することで安全性を高められます。

#include <array>
#include <iostream>

int main()
{
    std::array<int, 5> arr = {1, 2, 3, 4, 5};

    std::cout << arr.at(0) << std::endl; // 出力結果:1
    std::cout << arr.at(6) << std::endl; // 範囲外アクセス例外発生

    return 0;
}
1

また、普通の配列と同じようにループ処理することも可能です、

#include <array>
#include <iostream>

int main()
{
    std::array<int, 5> arr = { 1, 2, 3, 4, 5 };

    //要素数はsize()で取得可能
    for (int i = 0; i < arr.size(); i++) {
		std::cout << "arr[" << i << "] = " << arr[i] << std::endl;
    }

    //イテレーターを用いた以下の方法でもループ可能
    for (auto num : arr) {
        std::cout << num << " ";
    }
    return 0;
}
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
1 2 3 4 5

以上がstd::arrayの要素へのアクセス方法です。

1 2 3 4 5

目次から探す