unordered_map<pair<int,int>, bool>, int, pair_hash> ok_hash; //ok 另外,map容器并不需要hash函数,所以将key设置为pair是不会报错的。在数据量不大的情况下,也可以考虑使用map替代unordered_map,性能并不会有太大差异。
total:"<<total<<"\n";}voidTestIntKey(){unordered_map<int,int
};intmain() { unordered_map<pair<int,int>,int, pair_hash>table; table.emplace(make_pair(1,1),1); cout<< table[make_pair(1,1)];return0; }
unordered_map使用pair 因为unordered_map内部是由哈希表实现的,哈希表中的每一项为一个桶,分别装着键和值,原stl中不包含pair<int,int>类型的键,不能够直接使用嵌套到哈希表中,所以需要自定义哈希值与判断相等函数。下面是自定义函数:cpp // 分别计算出内置类型的 Hash Value 然后对它们进行 Combine 得到...
用XOR生成hash是一种很糟糕的选择,会有很多碰撞,效率会低下。参加我的博客:pair 作为 unordered_map...
map<char, int>::iterator it = mymap.begin(); mymap.insert(it, std::pair<char, int>('b', 300)); //效率更高 mymap.insert(it, std::pair<char, int>('c', 400)); //效率非最高 //范围多值插入 std::map<char, int> anothermap; anothermap.insert(mymap.begin(), mymap.find(...
关联容器(map、set、multimap、multiset、pair、unordered_map),一、使用关联容器 关联容器支持高效的关键字查找和访问。两个主要的关联容器类型是map和set。map中的元素是一些关键字---值(key---value)对:关键字起到索引的作用,值则表示与索引相关联的数据。set中
unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value。不同的是unordered_map不会根据key的大小进行排序, 存储时是根据key的hash值判断元素是否相同,即unordered_map内部元素是无序的,而map中的元素是按照二叉搜索树存储,进行中序遍历会得到有序遍历。
头文件:#inlcude<unordered_map> 其模板定义: template < class Key, //键值对中键的类型class T, //键值对中值的类型class Hash = hash<Key>, //容器内部存储键值对所用的哈希函数class Pred = equal_to<Key>, //判断各个键值对键相同的规则class Alloc = allocator< pair<const Key,T> > // 指定...
相反,我更愿意使用std::unordered_map::find。因此,如果您确定第一个键存在,但第二个键不存在,您...