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

胡金庫 2023年10月12日
  1. 範囲ベースのループを使用して配列を出力する
  2. 関数 copy を使って配列を出力する
  3. for_each アルゴリズムを用いて配列を出力する
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;
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - C++ Array