for ループによる反復処理
CoddyのC++ジャーニー「論理と制御フロー」セクションの一部。レッスン 14/56。
個々の要素にアクセスする方法と vector のサイズを確認する方法がわかったところで、traditional for ループを使ってすべての要素を体系的に処理する方法を学びましょう。このアプローチでは、.size() メソッドとインデックスベースのアクセスを組み合わせて、各要素を順番に訪問します。
A traditional for loop は、0 から始まり vector の size に達するまで増加するインデックス変数を使用します。
std::vector<std::string> names = {"Alice", "Bob", "Charlie"};
for (int i = 0; i < names.size(); i++) {
std::cout << names[i] << std::endl;
}この例では、loop の条件 i < names.size() によって vector の範囲を超えないことが保証され、names[i] は現在のインデックスを使用して各要素にアクセスします。loop は各 name をそれぞれ別の行に print します。
このパターンは、データのコレクションを処理するうえで基本となるものです。インデックス変数 i によって、操作している要素を正確に制御できます。そのため、各要素の位置を知る必要がある場合や、反復処理中に要素を変更したい場合に便利です。
loop が終了した後、i はこの場合 3 である names.size() と等しくなることに注意してください。これは、条件 i < names.size() が false になるとすぐに loop が停止するためです。
チャレンジ
簡単Create a traditional for loop を使用して product names の vector を iterate し、番号付きリスト形式で表示するプログラムを作成してください。
次の入力が提供されます。
- product の number を表す整数
n - 続いて、product names を表す
n個の string
プログラムでは、次のことを行ってください。
productsという名前のstd::vector<std::string>を Create するpush_back()を使用して、n個の product names をそれぞれ vector に add する- index variable を使用する traditional for loop で vector を iterate する
- loop 内で、loop の condition に
.size()method を使用する - square bracket
[]operator を使用して、各 element に index でアクセスする - 指定された format で、各 product とその position number(1 から開始)を print する
次の exact output format を使用してください。
Product 1: [first product name]
Product 2: [second product name]
Product 3: [third product name]
...for loop は index 0 から開始し、condition として i < products.size() を使用し、各 iteration で i を increment してください。print するときは、index に 1 を add して、1 から始まる position numbers を表示してください。
自分で試してみよう
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
// 商品の数を読み取る
int n;
cin >> n;
// 商品名を格納するvectorを作成する
vector<string> products;
// 商品名を読み取り、vectorに追加する
for (int i = 0; i < n; i++) {
string product;
cin >> product;
products.push_back(product);
}
// TODO: 以下にコードを書いてください
// 従来のforループを使用してvectorを反復処理する
// 各商品をその位置番号とともに出力する
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
論理と制御フローのすべてのレッスン
自分で練習してみよう: C++オンラインコンパイラ