C++ で配列をループする方法
胡金庫
2023年10月12日
この記事では、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;
著者: 胡金庫