c++ - for循环的范围内是什么类型?

标签 c++ c++11

#include <vector>
#include <iostream>

int main()
{
    std::vector< int > v = { 1, 2, 3 };
    for ( auto it : v )
    {
        std::cout<<it<<std::endl;
    }
}

auto 扩展到什么?是扩展成int&还是int

最佳答案

它扩展为 int。如果需要引用,可以使用

for ( auto& it : v )
{
    std::cout<<it<<std::endl;
}

根据 C++11 标准,auto 算作 simple-type-specifier [7.1.6.2],因此适用于它的规则与其他简单类型说明符。这意味着用 auto 声明引用与其他任何东西没有什么不同。

关于c++ - for循环的范围内是什么类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8269694/

相关文章:

c++ - 如何在 32 位机器上将 100G 整数插入到 vector 中?

c++模板,如何将模板参数映射到其他模板参数

c++ - 使用可变参数模板的多键映射

c++ - 将任何函数作为模板参数传递

c++ - std::set with std::pair - 如何为元素编写比较器

c++ - 访问算法的 lambda 函数中的迭代器导致我出现段错误

c++ - 如何构建特定函数调用的图形?

c++ - 我怎样才能让编译器在没有 C++11 的情况下使用模板 'const' 参数中的最小类型来与(受限的)8 位微 Controller 一起使用?

c++ - 将字符串存储在 constexpr 结构中

C++ 可变参数模板迭代 vector 并比较元素