用 for 循环遍历
本课属于 Coddy C++ 学习旅程的“逻辑与流程”单元。第 14 课,共 56 课。
现在你已经知道如何访问单个元素并检查向量的大小,接下来我们来学习如何使用传统的 for 循环按顺序处理每个元素。这种方法结合了 .size() 方法和基于索引的访问方式,依次遍历每个元素。
传统的 for 循环使用一个从 0 开始递增的索引变量,直到它达到 vector 的大小:
std::vector<std::string> names = {"Alice", "Bob", "Charlie"};
for (int i = 0; i < names.size(); i++) {
std::cout << names[i] << std::endl;
}在这个示例中,循环条件 i < names.size() 确保我们不会超出 vector 的边界,而 names[i] 使用当前索引访问每个元素。循环会将每个名字单独打印在一行。
这种模式是处理数据集合的基础。索引变量 i 能让你精确控制当前处理的元素,因此在你需要知道每个元素的位置,或想在迭代过程中修改元素时,它很有用。
请注意,循环结束后,i 等于 names.size(),在本例中是 3,因为当条件 i < names.size() 变为 false 时,循环就会停止。
挑战
简单创建一个程序,使用传统 for 循环遍历产品名称向量,并以带编号的列表形式显示它们。
将提供以下输入:
- 一个整数
n,表示产品数量 - 然后是
n个表示产品名称的字符串
你的程序应该:
- 创建一个名为
products的std::vector<std::string> - 使用
push_back()将这n个产品名称逐个添加到向量中 - 使用带索引变量的传统 for 循环遍历向量
- 在循环中,使用
.size()方法作为循环条件 - 使用方括号
[]运算符按索引访问每个元素 - 按照指定格式打印每个产品及其位置编号(从 1 开始)
使用以下准确的输出格式:
Product 1: [first product name]
Product 2: [second product name]
Product 3: [third product name]
...for 循环应该从索引 0 开始,使用 i < products.size() 作为条件,并在每次迭代中递增 i。打印时,将索引加 1,以显示从 1 开始的位置编号。
亲手试试
#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++ 在线编译器