Home Item 26 - 範圍 for 迴圈增強(中文)
Post
Cancel

Item 26 - 範圍 for 迴圈增強(中文)

範圍 for 迴圈增強

來講個比較小範圍的增強吧,c++20 支援 for 迴圈的初始化語句(init-statements)和初始值設定項(initializers)

直接看 code 吧!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <vector>

int main() {
    // 使用範圍 for 迴圈進行初始化語句
    for (std::vector<int> vec = {1, 2, 3, 4, 5}; int n : vec) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    // 使用範圍 for 迴圈進行變量初始化
    int totalSum = 0;
    for (int sum = 0; int i : {1, 2, 3, 4, 5}) {
        sum += i;
        totalSum += sum;
        std::cout << "當前的和: " << sum << ", 總和: " << totalSum << std::endl;
    }

    return 0;
}

解釋: 向量初始化:

for (std::vector vec = {1, 2, 3, 4, 5}; int n : vec) 中,vec 在迴圈頭部初始化,然後在迴圈體中使用。 int n : vec 用於遍歷向量 vec 中的每個元素。 輸出結果為:1 2 3 4 5 。 變量初始化:

for (int sum = 0; int i : {1, 2, 3, 4, 5}) 中,sum 在迴圈頭部初始化。 int i : {1, 2, 3, 4, 5} 用於遍歷初始化列表 {1, 2, 3, 4, 5} 中的每個元素。 在迴圈體中,sum 的值在每次迭代中更新,並且總和 totalSum 也在每次迭代中更新。

執行結果 Desktop View

好處

這種增強使得範圍 for 迴圈不僅能方便地遍歷集合,還能在迴圈頭部進行初始化操作,使代碼更加簡潔和易讀。

☝ツ☝

This post is licensed under CC BY 4.0 by the author.

👈 ツ 👍

Item 26 - Range-based for Loop Enhancements(English)

Android app Version Update(English)