ZetCode

C++ foreach

最后修改于 2023 年 1 月 9 日

C++ foreach 教程展示了如何在 C++ 中遍历容器。

C++ 11 引入了基于范围的 for 循环。 for-range 循环可用于轻松遍历容器的元素,包括数组、向量、列表和映射。

C++ foreach 数组

数组是相同类型元素的固定大小的顺序集合。

foreach_array.cpp
#include <iostream>

int main() {

    int vals[] {1, 2, 3, 4, 5};

    for (auto val : vals) {

        std::cout << val << std::endl;
    }
}

该示例打印数组中所有整数元素。

$ ./foreach_array 
1
2
3
4
5

C++ foreach 向量

向量是动态数组。

foreach_vector.cpp
#include <iostream>
#include <vector>

int main() {

    std::vector<int> nums { 1, 2, 3, 4, 5, 6, 7 };

    for (auto num: nums) {

        std::cout << num << std::endl;
    }
}

我们遍历整数向量。

$ ./foreach_vector 
1
2
3
4
5
6
7

C++ foreach 列表

列表是支持在容器的任何位置进行常数时间插入和删除元素的容器。它允许非连续的内存分配。

foreach_list.cpp
#include <iostream>
#include <list>

int main() {

    std::list<std::string> words = { "falcon", "sky", "cloud", "book" };

    for (auto word: words) {

        std::cout << word << std::endl;
    }
}

我们打印字符串列表中所有元素。

$ ./foreach_list 
falcon
sky
cloud
book

C++ foreach 映射

映射是存储键/值对的容器。

foreach_map.cpp
#include <iostream>
#include <map>

int main() {

    std::map<std::string, int> items {
        {"coins", 3},
        {"pens", 2},
        {"keys", 1},
        {"sheets", 12}
    };

    for (auto item: items) {

        std::cout << item.first << ": " << item.second << std::endl;
    }
}

我们有一个域名映射。使用 for-range 循环,我们遍历映射的键/值对。

$ ./foreach_map 
coins: 3
keys: 1
pens: 2
sheets: 12

在本文中,我们已经使用 C++ 中的 for-range 循环。