C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++ for-each循环

C++中的for-each循环使用

作者:Bitup_bitwin

范围循环是C++11引入的特性,用于简化数组和容器的遍历过程,它通过直接操作元素而不是使用索引或迭代器,范围循环可以使用引用或const修饰符来控制元素的修改权限,适用于所有支持begin()和end()方法的容器,该循环方式不适用于未提供这些方法的C++98/03容器

C++中的范围循环(Range-based for loop),也称为for-each循环,是C++11引入的一种简化数组或容器遍历的循环方式。相比传统的for循环,for-each更加简洁且不容易出错,特别是在遍历STL容器时。

基本语法

范围循环的语法结构如下:

for (declaration : range_expression) {
    // loop body
}

举例说明

我们通过几个例子来讲解范围循环的使用。

1. 遍历数组

#include <iostream>
int main() {
    int arr[] = {1, 2, 3, 4, 5};
    // 使用范围循环遍历数组
    for (int num : arr) {
        std::cout << num << " ";
    }
    return 0;
}

输出:

1 2 3 4 5

在这个例子中,int num 是声明的循环变量,它会依次获取arr数组中的每一个元素。

2. 遍历std::vector

#include <iostream>
#include <vector>
int main() {
    std::vector<int> vec = {10, 20, 30, 40, 50};
    // 使用范围循环遍历 vector
    for (int num : vec) {
        std::cout << num << " ";
    }
    return 0;
}

输出:

10 20 30 40 50

与遍历数组类似,这里通过范围循环可以简洁地遍历std::vector中的元素。

3. 遍历容器中的对象

范围循环不仅可以遍历简单的基本类型数组或容器,也可以用来遍历容器中的对象:

#include <iostream>
#include <vector>
struct Person {
    std::string name;
    int age;
};
int main() {
    std::vector<Person> people = {{"Alice", 25}, {"Bob", 30}, {"Charlie", 35}};
    // 使用范围循环遍历对象
    for (const Person& person : people) {
        std::cout << person.name << ": " << person.age << "\n";
    }
    return 0;
}

输出:

Alice: 25
Bob: 30
Charlie: 35

4. 使用引用修改元素

范围循环可以通过引用访问元素,从而对容器中的元素进行修改。如果不使用引用,循环中得到的只是元素的副本,无法对原数组或容器中的元素进行修改。

Alice: 25
Bob: 30
Charlie: 35

输出:

2 4 6 8 10

通过int& num,我们可以访问并修改vec容器中的每个元素。

5. 使用const保护元素

有时候我们不希望在循环中修改元素,可以使用const来确保元素不会被修改:

#include <iostream>
#include <vector>
int main() {
    std::vector<int> vec = {10, 20, 30, 40, 50};
    // 使用 const 来防止修改元素
    for (const int& num : vec) {
        std::cout << num << " ";
    }
    return 0;
}

这里的const int&确保了num只是一个只读的引用,无法在循环内部对其进行修改。

范围循环的使用注意事项

迭代副本与引用

常量性保护

适用范围

不可用于某些C++98容器

总结

范围循环是C++中遍历容器、数组的一种简洁、直观的方式,能减少代码的复杂度,提高代码的可读性。通过对引用与常量的合理使用,可以更灵活地控制数据访问与修改。

到此这篇关于C++中的for-each循环的文章就介绍到这了,更多相关C++ for-each循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文