unordered_map是C++中的哈希表,可以在任意类型与类型之间做映射。 基本操作 引用头文件(C++11):#include <unordered_map> 定义:unordered_map<int,int>、unordered_map<string, double> ... 插入:例如将("ABC" -> 5.45) 插入unordered_map<string, double> hash中,hash["ABC"]=5.45 查询:hash["ABC"]会返...
#include<iostream>#include<string>#include<random>#include<unordered_map>#include<windows.h>usingnamespacestd;usingstd::string;usingstd::random_device;usingstd::default_random_engine;stringStrRand(intlength){chartmp;stringbuffer;random_devicerd;default_random_enginerandom(rd());for(inti=0;i<length...
可以看到除去std::unordered_map的构造函数,剩下的基本是hash、operator new这两个函数占时间了。在const char*作key的时,hash函数占了22%,new函数占9.66%,而std::string时,new占了15.42,hash才9.72%,因此这两者的效率没差多少。 看到自己的hash函数写得太差,寻思着改一下。hash函数由两部分构成,一部分是用st...
可以看到除去std::unordered_map的构造函数,剩下的基本是hash、operator new这两个函数占时间了。在const char*作key的时,hash函数占了22%,new函数占9.66%,而std::string时,new占了15.42,hash才9.72%,因此这两者的效率没差多少。 看到自己的hash函数写得太差,寻思着改一下。hash函数由两部分构成,一部分是用st...
std::unordered_map<MyClass, int, MyClassHash> _mymap; 如果类中没有重载==函数,则修改上述代码如下: #include <string> #include <unordered_map> class MyClass { private: std::vector<int> _data; public: MyClass(){} std::string GetStr() const { ...
使用map或者unordered_map进行字符串查找一般都是用std::string类型作为key,但是std::string的效率实在太低,不得不进行优化,尝试使用char*作key来查找。 一、map以char*为key 默认的map<char *,int>的key是指针,比较的是指针值的大小,不能进行字符串的匹配。
//typedef map<int,int> MapKey; //采用map //typedef hash_map<int,int> MapKey; //采用hash_map typedef unordered_map<int,int> MapKey; //采用unordered_map int GetPidMem(pid_t pid,string& memsize) { char filename[1024]; snprintf(filename,sizeof(filename),"/proc/%d/status",pid); ...
因此,除了有顺序要求和有单词操作时间要求的场景下用map,其他场景都使用unordered_map。 map的使用方法 头文件:include <map> 下面的代码中都包含了std:using namespace std; 创建map对象 代码语言:javascript 复制 // Method1 map<char, int> map1; map1['a'] = 88; map1['b'] = 90;...
constMyKeyType&key)const{// 计算并返回key的哈希值// 这里是一个示例,实际上应该根据key的实际结构来设计哈希算法returnstd::hash<int>()(key.id)^std::hash<std::string>()(key.name);}};// 使用自定义哈希函数的unordered_mapstd::unordered_map<MyKeyType,MyValueType,MyHashFunction>myUnorderedMap;...
中的 Hash 和 Pred 就不会感到困惑了 – Hash 就是我们模拟实现中的仿函数HashFunc,它用来将 key 转换为整形,从而使得 key 可以取模并成功映射,其中整形/指针类型和 string 类型的 HashFunc 是系统内置的,而其他自定义类型的 HashFunc 比如 People、Date 则需要我们自己提供仿函数并显式传递给 unordered_map;...