一、foreach语法的基本知识
foreach循环在C++11中被引入。它允许我们简单明了地遍历数组,容器和其他带有迭代器的结构。
foreach循环的基本语法如下所示:
for (auto element : container) { // 对 element 做一些操作 }
在这个语法中,auto关键字通常与元素类型推断一起使用,例如数组中的元素类型。
给定一个花费数组:
double costs[] = { 1.0, 2.0, 3.0 };
下面的foreach循环可以用于遍历数组:
for (auto cost : costs) { std::cout << cost << std::endl; }
循环将输出:
1 2 3
二、使用foreach循环遍历容器
我们可以使用foreach循环遍历C++容器。在这个例子中,我们可以使用std::vector容器:
std::vector names = { "Tom", "Jerry", "Scooby" }; for (std::string name : names) { std::cout << name << std::endl; }
输出:
Tom Jerry Scooby
我们也可以使用auto关键字来推断数据类型:
std::vector numbers = { 1, 2, 3, 4, 5 }; for (auto number : numbers) { std::cout << number << std::endl; }
输出:
1 2 3 4 5
三、使用foreach循环遍历字符串
我们可以不使用迭代器遍历字符串,而是使用foreach循环。在下面的例子中,我们将使用foreach循环遍历字符串:
std::string str = "Hello, world!"; for (char c : str) { std::cout << c << std::endl; }
输出:
H e l l o , w o r l d !
四、使用foreach循环遍历结构体
我们可以使用foreach循环来遍历结构体数组。在下面的例子中,我们将使用foreach循环遍历结构体:
struct Employee{ std::string name; int age; }; Employee employees[] = { {"Tom", 28}, {"Jerry", 24}, {"Scooby", 26} }; for (auto e : employees) { std::cout << "Name: " << e.name << ", Age: " << e.age << std::endl; }
输出:
Name: Tom, Age: 28 Name: Jerry, Age: 24 Name: Scooby, Age: 26
五、foreach循环中使用引用
我们可以使用引用在foreach循环中改变集合中的元素。在下面的例子中,我们将使用foreach循环将std::vector中的元素全部修改为0:
std::vector numbers = { 1, 2, 3, 4, 5 }; for (auto& number : numbers) { number = 0; }
现在,std::vector中的所有元素都变成了0:
0 0 0 0 0
六、foreach循环和const
我们也可以在foreach循环中使用const关键字,以确保我们不会在循环期间更改元素。 在下面的例子中,我们将使用const关键字来遍历std::vector:
const std::vector nums = { 1, 2, 3, 4, 5 }; for (const auto& number : nums) { std::cout << number << std::endl; }
输出:
1 2 3 4 5
七、总结
使用foreach循环是一种简单而又方便的方式来遍历数组,容器和其他带有迭代器的结构。它减少了代码的复杂度,并提高了可读性。可以在foreach循环中使用引用和const关键字。
原创文章,作者:VORIE,如若转载,请注明出处:https://www.506064.com/n/351528.html