配列

提供: 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;
}

関連項目




スポンサーリンク