std::unordered_map 和重复键
我正在使用 stl unordered_map,并且我似乎无法让 count 方法起作用。 这是我的程序:
typedef unordered_map<char, int> Mymap;
int main()
{
Mymap m;
m.insert(Mymap::value_type('a', 1));
m.insert(Mymap::value_type('b', 2));
m.insert(Mymap::value_type('c', 3));
m.insert(Mymap::value_type('b', 4));
m.insert(Mymap::value_type('b', 5));
cout << m.count('b') << endl;
return 0;
}
unordered_map 的文档说 unordered_map::count(const Key& k)
返回带有键 k
的元素数量。 所以我希望这里的输出是 3
,而实际输出是 1
。为什么?
I'm using an stl unordered_map, and I can't seem to get the count method to work.
This is my program:
typedef unordered_map<char, int> Mymap;
int main()
{
Mymap m;
m.insert(Mymap::value_type('a', 1));
m.insert(Mymap::value_type('b', 2));
m.insert(Mymap::value_type('c', 3));
m.insert(Mymap::value_type('b', 4));
m.insert(Mymap::value_type('b', 5));
cout << m.count('b') << endl;
return 0;
}
The documentation for unordered_map says that unordered_map::count(const Key& k)
returns the number of elements with the key k
.
So I would expect the output here to be 3
, whereas the real output is 1
. Why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
unordered_map
维护键到值的 1:1 映射,因此count
将始终返回零或一。如果您想将多个值映射到单个键,则需要一个
unordered_multimap
。An
unordered_map
maintains a 1:1 mapping of key to value, socount
will always return zero or one.You need an
unordered_multimap
if you want to map multiple values to a single key.输出
Output