【C++】array(std::array)で出来ることと使い方【標準ライブラリ】
C++標準ライブラリarrayの使い方
- std::arrayとは
- std::arrayの宣言と初期化
- 要素へのアクセス
- イテレーション(ループ処理)
- 要素の変更
- サイズの取得
- ソート
- 要素の検索
- std::arrayの比較
- 多次元配列としての利用
- std::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の関数と親和性が高い。