【发布时间】:2022-01-27 05:27:12
【问题描述】:
在 C++17 for 循环语法 for(auto [key, val]: students) 中,auto 替换了什么?
如果学生是,例如std::map<int,char*>,如果不是auto,会写什么?我什至不明白它在取代什么。 [int,char*]?
【问题讨论】:
-
在这种情况下,
auto所指的类型不存在。 -
@frozenca:是的,有。这是一个
pair<const int, char*>,它是map的value_type。 -
@NicolBolas:但你不能写
for (std::pair<const int, char*> [key, val] : students)。 -
@Jarod42:没错,你不会写。但是结构化绑定需要有这样的类型。可以是一对,也可以是一个元组,但可以是另一个用户定义的类型。在这种情况下,确实是
std::pair<const int, char*>。因为它是一对,所以你绑定了 2 个元素。