“ if”语句的cppreference页面;
https://en.cppreference.com/w/cpp/language/if
给出以下示例;
除了由init-statement声明的名称(如果init-statement是一个声明)和由condition声明的名称(如果condition是一个声明)在同一范围内,这也是这两个语句的范围 引用
std::map<int, std::string> m;
if (auto it = m.find(10); it != m.end()) { return it->size(); }
那是一个错字,不是吗?我应该在这里什么都不会错过;
it->second.size();
或
it->first;
不?
答案 0 :(得分:8)
是的,这是一个错字。 $REV
的{{1}}将被取消引用为iterator
,其中std::map
是std::map::value_type
。
请参见std::map::find
的用法示例(来自cppreference):
value_type
答案 1 :(得分:6)
您是正确的。给出的代码无法编译。参见here。 编译器错误是:
grid.dataSource.add({ Name: "John Doe" });
error: 'struct std::pair<const int, std::__cxx11::basic_string<char> >' has no member named 'size'
没有std::pair
成员。但是size
拥有它。
因此正确的代码应为:
std::string