【发布时间】:2016-11-15 12:03:21
【问题描述】:
我已经有了这个工作代码:
template <typename T1, typename T2>
std::ostream& operator<<(std::ostream &out, std::map<T1, T2> &map){
for (auto it = map.begin(); it != map.end(); ++it) {
out << it-> first << ", " << it->second << '\n';
}
return out;
}
template <typename T1, typename T2>
std::ostream& operator<<(std::ostream &out, std::unordered_map<T1, T2> &map){
for (auto it = map.begin(); it != map.end(); ++it) {
out << it-> first << ", " << it->second << '\n';
}
return out;
}
如您所见,这两个功能几乎相同。有没有办法去掉一个而只使用一个抽象函数?
【问题讨论】:
-
编写第三个模板,它只接受一个通用的
typename T参数,并从这两个参数中调用它。