配列
提供: C++入門
スポンサーリンク
配列 (array)とは、同一の型のデータをメモリ上に連続で並べたものです。C++でデータの列を扱うときに利用されます。配列を動的に確保する場合には、new/deleteを使用します。
読み方
- 配列
- はいれつ
- array
- あれい
概要
C++では、C言語と同様の配列を扱えます。
int a[5] = { 1,2,3,4,5 }; cout << a[0] << endl; a[0] *= 10;
C++では、STLのコンテナがあり、配列を使わずに、std::vectorなどのコンテナを利用してコーディングすることもあります。 配列に似ているものとして、C++では、std::arrayが提供されています。基本的に固定長の配列で、配列に似ていますが、メンバのatを使用すると境界チェックが行われるため、安全にデータにアクセスできるメリットがあります。
配列の初期化
- std::iotaで各要素に連番の値を代入する。
- std::generateで各要素に値を代入する。
- std::for_eachで各要素に値を代入する。
- std::fillで各要素に同じ値を代入する。
- for文で1つ1つ代入する。
メモリの動的確保と解放の例
ソースコード new_array1.cpp
メモリの動的確保には、newを使用し、解放には、deleteを使用します。 delete で解放するときに [] を指定しなければなりません。
#include <iostream> #include <exception> using namespace std; int main(int argc, char const* argv[]) { try { int *p = new int[10]; // 動的確保 p[0] = 10; cout << p[0] << endl; delete [] p; // メモリの開放 } catch (std::exception& e) { cerr << e.what() << endl; } return 0; }
コンパイル
g++ new_array1.cpp -o new_array1
実行例
% ./new_array1 10
スマートポインタと配列
動的確保した配列をスマートポインタで扱うには、std::unique_ptrを使用します。詳細については、std::unique_ptrをご参照ください。
#include <memory> try { std::unique_ptr<int[]> a(new int[10]); a[0] = 10; a[1] = 11; // ... } catch (std::exception &ex) { std::cerr << ex.what () << std::endl; }
関連項目
ツイート
スポンサーリンク