C++:打印出地图值
C++: Printing out map values
所以我有一张这样的地图:
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,则不需要这样做。您可以在运算符重载常见问题中找到更多信息。
相关文章:
- 如何使用 std::variant 打印地图键/值?
- 将对象放入地图后打印对象
- 如何打印我在地图中使用的数组?
- 为什么当我尝试打印地图内容时,我得到的是地址而不是 C++ 中的值?
- 通过迭代器打印出地图的值
- 如何打印属于地图的一系列元素(std::p air<size_t,std::string>)(不是所有元素)
- 在向量内打印地图
- 通过地图和打印内容迭代时,倒出输出
- 我想反转地图的值并使用基于范围的 for 循环打印它
- 打印出使用地图实现的Trie中的所有单词
- 为什么在地图中打印第二个元素
- GDB打印std ::地图元素
- 如何从多地图打印
- 如何打印包含集合的地图的内容
- C++ 如何打印此地图 std::map<int, pair<vector<pair<int, int>>, int>>
- 如何在 C++ 中打印通用地图
- 如何在控制台上将三张地图一起打印成三个不同的列?C++
- 如何打印地图的索引
- 地图的内容没有以特定的方式打印出来
- 地图不是在C++中用作数组样式打印吗?