c++ - 打印作为集合的无序映射的第二个元素
问题描述
如果我有一个简单的问题,我将std::unordered_map<std::string, std::set<std::string> > h;
如何打印出该集合 h 的第二个元素?
我知道我们可以说的第一个元素
for (auto it : h) {
std::cout << "First: " << it.first << " ";
}
虽然同样不适用it.second
。
Error: error C2679: binary '<<': no operator found which takes a right-hand operand of type '_Ty2' (or there is no acceptable conversion)
解决方案
迭代并打印集合元素。
for (auto& level1 : h) {
std::cout << "First: " << level1.first << " Second:";
for (auto& set_element : level1.second) {
std::cout << set_element << " ";
}
}
如果你真的想使用level1.second
,重载 << 运算符
ostream & operator << (ostream &out, const std::set<std::string> &myset)
{
for (auto& set_element : myset) {
out << set_element << " ";
}
return out;
}
并使用
for (auto& level1 : h) {
std::cout << "First: " << level1.first << " Second:"<<level1.second;
}
推荐阅读
- javascript - 未考虑速度 Jquery 切换功能
- javascript - 为什么函数中的 javascript 全局变量会显示错误?
- google-apps-script - Google 表格:在最后一个值大于当前行的列中查找行
- git - 如何显示按目录分组的文件列表的摘要
- django - Dockerizing由nginx服务的多节点python django后端
- elasticsearch - 无法根据查询和文档标记化从弹性搜索中获得正确的结果
- c++ - msvc内联静态成员变量重定义
- c++ - 无锁单生产者/单消费者循环缓冲区
- javascript - 从一页链接到第二页的下拉菜单
- python-3.x - 如何检查字符串是否存在于非字母数字列中?