如何为密钥类型和映射执行通用打印

时间:2009-03-14 18:05:29

标签: c++ map printing

参考这个问题StackoVerflow 529831,这是建议的方法之一

template<typename Map> typename Map::const_iterator 
greatest_less(Map const& m, typename Map::key_type const& k) {
    //How to print K and Map m
    typename Map::const_iterator it = m.lower_bound(k);
    if(it != m.begin()) {
      return --it;
    }
    return m.end();
}

我有兴趣打印关键K和Map m,怎么会这样。

1 个答案:

答案 0 :(得分:4)

使用<<运算符,确保为<<Map::key_type类型定义Map::data_type(您将知道代码不是这样的代码)不会编译。)

cout << k << endl;
for (typename Map::const_iterator it = m.begin(); it != m.end(); ++i) {
  cout << it->first << " -> " << it->second << endl;
}

e.g。如果您的Map::data_typestruct fraction成员float numeratorfloat denominator

ostream& operator<<(ostream& os, const fraction& obj) {
   return os << obj.numerator << '/' << obj.denominator;
}