Bee*_*San 8 c++ stl unordered-map c++11
我正在使用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;
}
Run Code Online (Sandbox Code Playgroud)
unordered_map的文档说明了unordered_map::count(const Key& k)返回带键的元素数k.所以我希望这里的输出是3,而真正的输出是1.为什么?
Jam*_*lis 29
A unordered_map维持键到值的1:1映射,因此count将始终返回零或一.
unordered_multimap如果要将多个值映射到单个键,则需要一个.
jfs*_*jfs 12
// g++ -std=c++0x init-unorderedmap.cc && ./a.out
#include <iostream>
#include <unordered_map>
namespace {
typedef std::unordered_map<char, int> Mymap;
}
int main() {
using namespace std;
Mymap m{ {'a', 1}, {'b', 2}, {'c', 3}, {'b', 4}, {'b', 5}};
cout << m.count('b') << endl;
unordered_multimap<char, int> mm{ {'b', 4}, {'b', 5}};
cout << mm.count('b') << endl;
}
Run Code Online (Sandbox Code Playgroud)
1
2
Run Code Online (Sandbox Code Playgroud)