C++ で配列をループする方法

胡金庫 2023年10月12日
  1. for ループを使って配列を繰り返し処理する
  2. 範囲ベースのループを使って配列を繰り返し処理する
  3. 配列の繰り返し処理に std::for_each アルゴリズムを使用する
C++ で配列をループする方法

この記事では、C++ でさまざまなメソッドを使って配列を繰り返し処理する方法を説明します。

for ループを使って配列を繰り返し処理する

配列の要素を繰り返し処理する見かけの方法は、for ループです。これはカンマで区切られた 3つの文で構成されています。最初に、カウンタ変数 i を初期化します。次の部分では、繰り返しのたびに評価される条件を宣言し、false が返されるとループの実行を停止します。この場合、カウンタと配列のサイズを比較します。最後の部分はカウンタをインクリメントし、これもループのサイクルごとに実行されます。

#include <array>
#include <iostream>

using std::array;
using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  array<string, 10> str_arr = {"Albatross", "Auklet", "Bluebird", "Blackbird",
                               "Cowbird",   "Dove",   "Duck",     "Godwit",
                               "Gull",      "Hawk"};

  for (size_t i = 0; i < str_arr.size(); ++i) {
    cout << str_arr[i] << " - ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

出力:

Albatross - Auklet - Bluebird - Blackbird - Cowbird - Dove - Duck - Godwit - Gull - Hawk -

範囲ベースのループを使って配列を繰り返し処理する

範囲ベースのループは、従来の for ループの可読版です。このメソッドは、複雑なコンテナに対する繰り返し処理を容易にし、各要素へのアクセスの柔軟性を維持することができるため、強力な代替手段となります。以下のコードサンプルは、先ほどの例を忠実に再現したものです。

#include <array>
#include <iostream>

using std::array;
using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  array<string, 10> str_arr = {"Albatross", "Auklet", "Bluebird", "Blackbird",
                               "Cowbird",   "Dove",   "Duck",     "Godwit",
                               "Gull",      "Hawk"};

  for (auto &item : str_arr) {
    cout << item << " - ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

配列の繰り返し処理に std::for_each アルゴリズムを使用する

for_each は、範囲要素を操作したり、カスタム定義された関数を適用したりするための強力な STL アルゴリズムです。最初の 2つのパラメータとして範囲の始点と終点のイテレータオブジェクトを、3 番目のパラメータとして関数オブジェクトを受け取ります。この場合、関数オブジェクトを lambda 式として宣言し、計算結果を直接コンソールに出力します。最後に、for_each メソッドの引数として custom_func 変数を渡すことで、配列の要素を操作することができます。

#include <array>
#include <iostream>

using std::array;
using std::cin;
using std::cout;
using std::endl;
using std::for_each;
using std::string;

int main() {
  array<int, 10> int_arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  auto custom_func = [](auto &i) { cout << i * (i + i) << "; "; };
  ;

  for_each(int_arr.begin(), int_arr.end(), custom_func);
  cout << endl;

  return EXIT_SUCCESS;
}

出力:

2; 8; 18; 32; 50; 72; 98; 128; 162; 200;
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

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

LinkedIn Facebook

関連記事 - C++ Array