hash_map 这个非stl的容器,基于hash table实现
来源:互联网 发布:围棋软件哪个好 编辑:程序博客网 时间:2024/05/17 02:28
网上很多资料博客,照搬照抄很多,主要讲述了它和关联容器(基于红黑数)之间的关系以及区别,比如map。楼主是一个不喜欢一上来就看那么多文字的人,楼主喜欢先了解怎么用,然后再去进行原理的分析,但是这样的教我使用的demo实在难找,so 才有了这篇文字。
头文件
linux下:
#include <ext/hash_map>
windows下好像是:
#include <hash_map>
using namespace __gnu_cxx;
using namespace std;
struct str_myhash{
size_t operator()(const string& key) const // const function //reload operator() //param is hash key type
{
printf("-----------str_myhash-------------\n");
return __stl_hash_string(key.c_str());
}//The result type must be size_t
};
struct str_myeq
{
bool operator()(string s1, string s2) const
{
printf("===========str_myeq================\n");
return (s1==s2)?true:false;
}
};
hash_map<string, string, str_myhash, str_myeq> myhashmap; // function object ,类型str_myhash, str_myeq 对象调用成员函数--运算符重载
myhashmap["123"] = "yuebuquan"; // 根据key生成hash_key 赋值
cout<< myhashmap["123"] <<endl; // 根据key生成hash_key 然后调用查询进行比较
-----------------------out print---------------------------------------------------
-----------str_myhash-------------
-----------str_myhash-------------
===========str_myeq================
承上:
用[]进行hash_map数据插入其实是先查找是否有相同的有就修改,没有就添加 。
效率不同于如下语句(是直接插入,map也是一样)
myhashmap.insert(make_pair("456", "haha"));
myhashmap.insert(pair<string, string>("345", "test"));
struct myless
{
bool operator() (const string& str1, const string& str2) const
{
cout<<"-------------in myless-------------" <<endl;
return str1<str2;
}
};
map<string, string, myless> mymap;
mymap["test1"] = "data1";
//mymap["test1"] = "data2"; //先找,到后是修改,找不到是插入
mymap.insert(make_pair("test1", "data2")); //直接插入,因为key相同的已经存在,所以插入会失败
cout<<mymap["test1"]<<endl; // 用[] 和用insert结果就不一样了
- hash_map 这个非stl的容器,基于hash table实现
- boost.unordered 基于hash table的四种容器(即hash_map,unordered_mutimap,hash_set,hash_multiset)
- hash_map 自实现hash函数容器错误
- Hash Table 的实现
- 【STL】关联容器 — hash_map
- STL中map与hash_map容器的选择
- STL中map与hash_map容器的选择收藏
- STL中map与hash_map容器的选择
- STL中map与hash_map容器的选择
- STL中map与hash_map容器的选择 ------------转载
- STL中map与hash_map容器的选择
- STL中map与hash_map容器的选择
- STL中map与hash_map容器的选择
- STL中map与hash_map容器的选择
- STL中map与hash_map容器的选择
- STL中map与hash_map容器的选择
- STL中map与hash_map容器的选择收藏
- hash_map的hash函数
- Docker认识
- java校招需要准备的全部内容
- 浅析PCI配置空间
- 数据库如何把null转化为空字符
- The advance of Java -- Genericity, Exception, IO(Day04)
- hash_map 这个非stl的容器,基于hash table实现
- network structure--dense and resnet
- iOS Xcode9最新 APP提交上架流程~(打包 ipa)
- flask局域网访问网站
- C++内存管理
- leetcode题解-32. Longest Valid Parentheses
- cassandra怎么获取所有表的字段名?
- Android Studio 3.0上分析内存泄漏的原因
- 4.故障恢复与备份