一开始我以为char* 的速度会快,因为插入string的时候是要构造string申请内存的,可能是我的hash函数比系统的要慢了,但是没想到会是这个结果,有相关经验的朋友可以看下是不是我写的代码有问题或者是什么情况导致的这个情况。 把hash函数修改成inline处理一下,并且加了一个map函数key为char*的进行对比 源码 #include <
// 创建一个 unordered_map,键为 int,值为 string std::unordered_map<int, std::string>myMap; // 插入一些键值对 myMap[1]="one"; myMap[2]="two"; myMap[3]="three"; // 打印所有元素 for(constauto&pair:myMap){ std::cout<<"Key: "<<pair.first<<", Value: "<<pair.second<<std...
//使用const char*,key为10000000时:unorder_mapcharcreate cost11.7611unorder_mapcharfind cost1.55619unorder_map std::stringcreate cost13.5376unorder_map std::stringfind cost2.33906//使用struct c_string,key为10000000时:unorder_mapcharcreate cost7.35524unorder_mapcharfind cost1.60826unorder_map std::stringcre...
与类模板 unordered_multimap 类不同,unordered_map 类型的对象可确保 key_eq()(X, Y) 对于受控序列的任意两个元素始终为 false。 (键是唯一的。)此对象还存储最大加载因子,用于指定每个存储桶的元素的最大所需平均数量。 如果插入元素导致 unordered_map::load_factor() 超出最大加载因子,容器将增加存储桶的...
unordered_map中的key使用string还是int效率更高? unordered_map对比python的dict性能差多少? unordered_map中的key使用string还是int效率更高? 先以24字节长度的字符串做key,生死10000个存在字典里面,然后在遍历查询10000000次,看最终消耗 #include <iostream> #include <string> #include <random> #include <unordered...
当key可以强转成整形时(比如负数,指针等),用缺省的仿函数即可。当key是string这种不能强转成整形的类型时,就要手动写一个转换成整形的仿函数。上方是取string的第一个字符进行返回。同时也要手动传入这个仿函数。 这种取首字符的方法不是很好,下面是另一种字符串哈希算法: ...
C++中map和unordered_map提供的是一种键值对容器,在实际开发中会经常用到,它跟Python的字典很类似,所有的数据都是成对出现的,每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值(value)。 map和unordered_map map是一种有序的容器,底层是用...
unordered_map感觉速度和hash_map差不多,但是支持string做key,也可以使用复杂的对象作为key。 unordered_map编译时gxx需要添加编译选项:--std=c++11 unordered_map模板: template < class Key, // unordered_map::key_type class T, // unordered_map::mapped_type class Hash = hash<Key>, // unordered_ma...
unordered_map容器的底层实现是Hash Table,元素乱序存储,但增删改查效率极高,复杂度均为 O(1) 代码语言:javascript 代码运行次数:0 运行 AI代码解释 unordered_map<string, int> unMap; cout << "unordered_map中的key值无序(底层哈希表实现):" << endl; unMap["B"] = 22; unMap["A"] = 11; unMap...
std::string key = "banana"; if (map.find(key) != map.end()) { std::cout << key << " found with value " << map[key] << std::endl; } else { std::cout << key << " not found" << std::endl; } return 0; } 在这个示例中,我们创建了一个unordered_map,键为string类型,...