你在auto关键字之后:
auto it = _m.begin();
Run Code Online (Sandbox Code Playgroud)
编译器在创建迭代器时知道_m的类型,那么为什么我需要自己编写这些类型呢?
是的,这是导致引入的确切逻辑auto.
如果你不能使用C++ 11,你会遇到类似的问题typedef.引入新标准的全部原因auto是因为您面临的确切问题 - 必须始终手动写出长类型名称是很尴尬的.
typedef std::map<int, string>::iterator map_itr;
map_itr it = _m.begin();
Run Code Online (Sandbox Code Playgroud)