首页 > 解决方案 > 基于 C++ 范围的循环——它们是如何工作的?

问题描述

在这个问题的开头,我会说我对 C 很了解,而且我正在学习 C++。

假设我有一个 std::string 对象,我想通过它的所有字符来验证它(例如,只允许 4 个字母)。

大约一周前,我看到for (type var : array)在一些代码中使用它,但我不记得它是如何使用的。我想知道..这到底是如何工作的,为什么会起作用?逻辑上不应该。

AFAIK,数组并不真正“知道”它们的长度是多少。所以假设我有这个代码:

int arr[] = { 1, 2, 3 };
for (int item : arr) {
    std::cout << item << std::endl;
}

鬼怎么for loop知道什么时候停下来?数组只是从特定地址开始并继续分配的内存(在本例中为堆栈)。数组没有“存储长度”(AFAIK)。这就是为什么存储数组的长度是程序员的责任,for (int i = 0; i < [length]; i++)但是这在某种程度上可行吗?

会喜欢一些解释。我的代码的特定用例:

std::string test = "Hello World!";
for (char letter : test) {
    if (letter == 'l') {
        std::cout << "'l' exists!" << std::endl;
    } // result should be 3 prints.
}

标签: c++arraysfor-loop

解决方案


推荐阅读