c++ - 如何执行键类型和映射的通用打印

标签 c++ dictionary 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();
}

我有兴趣打印 key K 和 map m,如何解决这个问题。

最佳答案

使用<<运算符,确保 <<为您的 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;
}

例如如果您Map::data_typestruct fraction与成员(member) float numeratorfloat denominator ,

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

关于c++ - 如何执行键类型和映射的通用打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/646392/

相关文章:

c++ - 编译时类层次结构的高效配置

c++ - 我怎样才能有一个 map 数组?

c++ - 用 C++ 循环构建三角形

c++ - 使用值对 std::map 进行排序

java - 如何以这种形式打印这个二维字符串数组而不需要太多的努力(java)?

c++ - 最后一次插入时链表错误

java - 我需要实现一种方法,可以从值中获取键并删除方法

dictionary - 在一个变量中返回多个 map

java - 从 Java 打印失败并显示 'pstopdffilter/pstocupsraster failed with err number -31000'

c# - 将 RichTextBox FlowDocument 保存到图像