`auto const& x` 在 C++ 中做什么?
what does `auto const& x ` do in C++?
我正在阅读这个问题的公认答案C++ Loop through Map
该答案中的示例:
for (auto const& x : symbolTable)
{
std::cout << x.first // string (key)
<< ':'
<< x.second // string's value
<< std::endl ;
}
在这种情况下,auto const&
是什么意思?
这使用了 range-based for 语句。它声明了一个名为 x
的变量,它是容器值类型的常量引用。由于 symbolTable
是 std::map<string, int>
,编译器将对映射 value_type
的常量引用分配给 x
,即 std::pair<const std::string, int>
.
这相当于 std::pair<const std::string, int> const &x
,但更短。只要序列的类型发生变化,它就会auto
自动适应。
我正在阅读这个问题的公认答案C++ Loop through Map
该答案中的示例:
for (auto const& x : symbolTable)
{
std::cout << x.first // string (key)
<< ':'
<< x.second // string's value
<< std::endl ;
}
在这种情况下,auto const&
是什么意思?
这使用了 range-based for 语句。它声明了一个名为 x
的变量,它是容器值类型的常量引用。由于 symbolTable
是 std::map<string, int>
,编译器将对映射 value_type
的常量引用分配给 x
,即 std::pair<const std::string, int>
.
这相当于 std::pair<const std::string, int> const &x
,但更短。只要序列的类型发生变化,它就会auto
自动适应。