我已经安装了CodeBloks,我正在测试它有一个简单的问题。
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map<int,int> mp;
mp[1]=2;
mp[2]=3;
for(unordered_map<int,int>::iterator it = mp.begin();it!=mp.end();it++)
cout<<*it<<" ";
return 0;
}
我收到此错误:
cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'
答案 0 :(得分:2)
for( const auto& n : u ) {
std::cout << "Key:[" << n.first << "] Value:[" << n.second << "]\n";
}
地图(无序或无地)由key
和value
组成。您可以使用迭代器中的first
和second
来访问它。
答案 1 :(得分:1)
错误可能会产生误导。实际问题是无序映射以键和值对的形式进行迭代,并且没有<<
运算符可以直接打印这些对。
您可以通过it->first
访问密钥,通过it->second
访问密钥:
for(unordered_map<int,int>::iterator it = mp.begin();it!=mp.end();it++)
cout<<it->first << " " << it->second << endl;
答案 2 :(得分:0)
地图存储键/值对,it
提供成员first
(代表键)和成员second
(代表值)。请尝试以下cout...
- 声明:
cout << it->first << ":" << it->second << " ";
答案 3 :(得分:0)
结构化绑定可以很好地解决这个问题:
for(auto [first, second] : mp) {
cout << first << '\t' << second << '\n';
}