【C++】array(std::array)で出来ることと使い方【標準ライブラリ】

【C++】array(std::array)で出来ることと使い方【標準ライブラリ】

C++標準ライブラリarrayの使い方

C++標準ライブラリarrayの使い方

std::arrayとは

std::arrayはC++標準ライブラリに含まれる固定長の配列コンテナで、C++11から導入されました。Cの組み込み配列と異なり、サイズを取得できるメンバ関数やSTLのコンテナとしての利点を持ちます。

std::arrayの宣言と初期化

#include <array>
#include <iostream>

int main() {
    std::array arr = {1, 2, 3, 4, 5};
    std::array arr2 = {3.14, 2.71, 1.41};

    std::cout << "arr[0]: " << arr[0] << std::endl;
    std::cout << "arr2[1]: " << arr2[1] << std::endl;

    return 0;
}

要素へのアクセス

要素には[]演算子またはat()メンバ関数でアクセスできます。

std::array arr = {10, 20, 30};
std::cout << arr[1] << std::endl;  // 20
std::cout << arr.at(2) << std::endl;  // 30

イテレーション(ループ処理)

範囲for文やstd::begin()std::end()を用いたループが可能です。

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

// 範囲for文
for (int x : arr) {
    std::cout << x << " ";
}

// イテレータを使用
for (auto it = arr.begin(); it != arr.end(); ++it) {
    std::cout << *it << " ";
}

要素の変更

配列の要素は直接変更できます。

std::array arr = {10, 20, 30};
arr[1] = 50;
std::cout << arr[1] << std::endl;  // 50

サイズの取得

size()メンバ関数で配列のサイズを取得できます。

std::array arr = {1, 2, 3, 4};
std::cout << arr.size() << std::endl;  // 4

ソート

std::sortを使ってソートできます。

#include <algorithm>

std::array arr = {5, 3, 1, 4, 2};
std::sort(arr.begin(), arr.end());

for (int x : arr) {
    std::cout << x << " ";
}  // 1 2 3 4 5

要素の検索

std::findを使用できます。

#include <algorithm>

auto it = std::find(arr.begin(), arr.end(), 3);
if (it != arr.end()) {
    std::cout << "見つかりました: " << *it << std::endl;
}

std::arrayの比較

同じサイズと型のstd::arrayは比較できます。

std::array a = {1, 2, 3};
std::array b = {1, 2, 3};
std::cout << (a == b) << std::endl;  // 1 (true)

多次元配列としての利用

std::array, 2> matrix = {{{1, 2, 3}, {4, 5, 6}}};
std::cout << matrix[1][2] << std::endl;  // 6

std::arrayのメリットと性能

  • 固定サイズで動的確保が不要なため、高速。
  • std::vectorよりメモリオーバーヘッドが少ない。
  • STLの関数と親和性が高い。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です