C++:打印出地图值

C++: Printing out map values

本文关键字:地图 打印 C++      更新时间:2023-10-16

所以我有一张这样的地图:

map<long, MusicEntry> Music_Map;

音乐条目包含字符串(姓名、艺术家、大小和添加日期)

我的问题是如何打印,如何打印出地图中的所有数据?我试过做...

   for(auto it = Music_Map.cbegin(); it!= Music_Map.cend(); ++it)
    cout << it-> first << ", " <<  it-> second << "n";

我认为出现问题的是它无法编译和读取第二个又名音乐条目。

你需要提供一个std::ostream operator<< (std::ostream&, const MusicEntyr&),以便你可以做这种事情:

MusicEntry m;
std::cout << m << std::endl;

完成此操作后,您可以打印地图的second字段。下面是一个简化的示例:

struct MusicEntry
{
  std::string artist;
  std::string name;
};
std::ostream& operator<<(std::ostream& o, const MusicEntry& m)
{
  return o << m.artist << ", " << m.name;
}

你拥有的代码很好,但你需要实现

std::ostream& operator<<(ostream& os, const MusicEntry& e)
{
    return os << "(" << e.name << ", " << ... << ")";
}

并且您可能需要在MusicEntry中声明上述friend才能访问MusicEntry的私人(或受保护)数据:

class MusicEntry
{
    // ...
    friend std::ostream& operator<<(ostream& os, const MusicEntry& e);
};

当然,如果数据是公开的,或者如果你使用公共getter,则不需要这样做。您可以在运算符重载常见问题中找到更多信息。