C++ でベクトルを繰り返し処理する方法
胡金庫
2023年10月12日
この記事では、異なるループを用いて C++ ベクトルを繰り返し処理する方法をいくつか紹介します。サンプルコードでは、より良いデモンストレーションのために、繰り返し処理中に要素を表示します。ために cout
操作を使用していることに注意してください。
for
ループを使ってベクトルを繰り返し処理する
最初のメソッドは for
ループであり、カンマで区切られた 3つの文からなります。まず、変数 i
を定義してゼロに初期化することから始めます。次の部分では、変数 i
を vector
の要素数と比較し、それを size()
メソッドで取得します。最後の部分は比較部分として繰り返し実行され、i
を 1つインクリメントします。
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<string> str_vec = {"bit", "nibble", "byte", "char",
"int", "long", "long long", "float",
"double", "long double"};
for (size_t i = 0; i < str_vec.size(); ++i) {
cout << str_vec[i] << " - ";
}
cout << endl;
return EXIT_SUCCESS;
}
出力:
bit - nibble - byte - char - int - long - long long - float - double - long double -
範囲ベースのループを使ってベクトルを繰り返し処理する
for
ループは場合によっては非常に読みづらくなることがあり、そのために範囲ベースのループと呼ばれる代替構造があります。このバージョンは、複雑なコンテナ構造の繰り返し処理に適しており、要素にアクセスするための柔軟な機能を提供します。以下のコードサンプルを参照してください。
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<string> str_vec = {"bit", "nibble", "byte", "char",
"int", "long", "long long", "float",
"double", "long double"};
for (auto item : str_vec) {
cout << item << " - ";
}
cout << endl;
return EXIT_SUCCESS;
}
ベクトルを繰り返し処理するための std::for_each
アルゴリズムを使用する
STL アルゴリズムには、使用するための広範な機能が用意されており、その中の 1つに繰り返し処理のためのメソッドがあります。次の例は、lambda
式を用いて関数オブジェクトを宣言し、この custom_func
を 1つのステートメントでベクトル要素に適用する方法を示しています。
#include <algorithm>
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::for_each;
using std::vector;
int main() {
vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto custom_func = [](auto &i) { i *= i; };
for_each(int_vec.begin(), int_vec.end(), custom_func);
for (auto i : int_vec) cout << i << "; ";
cout << endl;
return EXIT_SUCCESS;
}
著者: 胡金庫