当我有一个包含模板映射的模板类和一个由const_iterator
在以下代码中声明的typedef
时,如何遍历该类外部的映射元素,例如在main中将其打印在输出上?
template<class K, class V>
class template_map{
private:
typedef typename std::map<K,V> TMap;
TMap my_map;
public:
typedef typename TMap::const_iterator const_iterator;
...
};
int main()
{
template_Map<int,double> Map1 //suppose that contains elements
?
}
更新:是否可以在类外部使用typedef迭代器?如果可以,采用哪种方式?
最佳答案
您需要在模板上定义将返回迭代器的成员函数:
template<class K, class V>
class template_map{
private:
typedef typename std::map<K,V> TMap;
TMap my_map;
public:
typedef typename TMap::const_iterator const_iterator;
const_iterator begin() const { return my_map.begin(); }
const_iterator end() const { return my_map.end(); }
};
然后:
int main()
{
template_map<int, int> m;
// Populate map...
// Then iterate...
for (auto i = m.begin(); i != m.end(); i++)
{
}
}
但是,我不确定在这里添加什么到
std::map
,为什么不按原样使用它呢?