【发布时间】:2015-03-13 14:00:52
【问题描述】:
例如,我有一个std::map<int, string> _m;,我想遍历它。
所以我必须写这样的东西:std::map<int, string>::iterator it = _m.begin()。
问题是是否可以在不使用类型名称的情况下创建该迭代器。编译器在创建迭代器的那一刻就知道_m的类型,那我为什么要自己写这些类型呢?
更新 我忘了说我必须使用旧的 C++ 标准。
【问题讨论】:
-
除非你使用 C++11,否则你不能这样做。您可以创建一个 typedef,这样您就不必在每次需要创建该类型的迭代器时都键入
std::map<int, string>::iterator。 -
“我必须使用旧的 C++ 标准”——那么你就错过了很多好东西。包括这样做的能力。
标签: c++ templates iterator std c++03