HOWTO · C++

C++ で配列を出力する方法

この記事では、C++ で配列を出力する方法を示します。

このページの内容

この記事では、C++ で配列の要素をコンソールに出力する方法を紹介します。

範囲ベースのループを使用して配列を出力する

このメソッドは、モダンな C++11 の範囲ベースのスタイルを採用した典型的な for ループです。範囲ベースの繰り返し処理では、const 参照 (auto const& i)、値 (auto i)、転送参照 (auto&& i) などのカスタム指定子を使用して要素にアクセスするオプションが用意されています。このメソッドの利点は、従来の for ループよりも使いやすさと可読性にあります。

#include <iostream>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  for (auto const& value : arr) cout << value << "; ";
  cout << endl;

  return EXIT_SUCCESS;
}

出力:

1; 2; 3; 4; 5; 6; 7; 8; 9; 10;

関数 copy を使って配列を出力する

関数 copy() は STL <algorithm> ライブラリに実装されており、範囲ベースの演算のための強力なツールです。copy は範囲の開始点と終点のイテレータを最初の 2つのパラメータとして受け取ります。この場合、array の要素をコンソールに出力するために、第 3 引数として出力ストリームのイテレータを渡します。

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  copy(arr.begin(), arr.end(), std::ostream_iterator<int>(cout, "; "));
  cout << endl;

  return EXIT_SUCCESS;
}

出力:

1; 2; 3; 4; 5; 6; 7; 8; 9; 10;

別の方法として、上記の例を簡単に再実装して、配列の要素を逆順に出力することができます。関数 copy() の最初の 2つの引数を修正し、rbegin/rend 関数呼び出しで代用します。

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  copy(arr.rbegin(), arr.rend(), std::ostream_iterator<int>(cout, "; "));
  cout << endl;

  return EXIT_SUCCESS;
}

出力:

10; 9; 8; 7; 6; 5; 4; 3; 2; 1;

for_each アルゴリズムを用いて配列を出力する

for_each は STL ライブラリのもう一つの強力なアルゴリズムです。これは、与えられた関数オブジェクトを範囲の各要素に適用することができます。この例では、lambda 式を custom_func 変数として定義し、それを for_each メソッドに渡して与えられた配列の要素を操作します。

#include <iostream>
#include <iterator>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  auto custom_func = [](auto &i) { cout << i << "; "; };
  for_each(arr.begin(), arr.end(), custom_func);
  cout << endl;

  return EXIT_SUCCESS;
}

出力:

1; 2; 3; 4; 5; 6; 7; 8; 9; 10;