博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL - Unorderedset - 自定义哈希函数
阅读量:7216 次
发布时间:2019-06-29

本文共 2519 字,大约阅读时间需要 8 分钟。

1. hash工具类

hashval.hpp

#ifndef _Core_HashVal_H_#define _Core_HashVal_H_#include 
// from boost (functional/hash):// see http://www.boost.org/doc/libs/1_35_0/doc/html/hash/combine.htmltemplate
inline void hash_combine (std::size_t& seed, const T& val){ seed ^= std::hash
()(val) + 0x9e3779b9 + (seed<<6) + (seed>>2);}// auxiliary generic functions to create a hash value using a seedtemplate
inline void hash_val (std::size_t& seed, const T& val){ hash_combine(seed,val);}template
inline void hash_val (std::size_t& seed, const T& val, const Types&... args){ hash_combine(seed,val); hash_val(seed,args...);}// auxiliary generic function to create a hash value out of a heterogeneous list of argumentstemplate
inline std::size_t hash_val (const Types&... args){ std::size_t seed = 0; hash_val (seed, args...); return seed;}#endif

 

2. UnorderedSetTest.cpp

#include 
#include "../../Core/print.hpp"#include "UnorderedSetTest.h"#include "../../Core/hashval.hpp"#include "../../Domain/Models/Customer.h"#include "../../Domain/Models/CustomerHash.h"#include "../../Domain/Models/CustomerEqual.h"#include
#include
using namespace std;void UnorderedSetTest::simpleHashFunc(){ // unordered set with own hash function and equivalence criterion unordered_set
custset; custset.insert(Customer("arne", "wink", 70)); custset.insert(Customer("peter", "zhang", 70)); PRINT_ELEMENTS(custset); Customer cust = Customer("arne", "wink", 70); if (custset.find(cust) != custset.end()) { cout << "Customer: " << cust << " found!" << endl; } else { cout << "Customer: " << cust << " not exists!" << endl; } Customer cust2 = Customer("arne", "wink2", 70); if (custset.find(cust2) != custset.end()) { cout << "Customer: " << cust2 << " found!" << endl; } else { cout << "Customer: " << cust2 << " not exists!" << endl; }}void UnorderedSetTest::run(){ printStart("simpleHashFunc()"); simpleHashFunc(); printEnd("simpleHashFunc()");}

 

3. 运行结果:

---------------- simpleHashFunc(): Run Start ----------------

[arne,wink,70] [peter,zhang,70]
Customer: [arne,wink,70] found!
Customer: [arne,wink2,70] not exists!
---------------- simpleHashFunc(): Run End ----------------

转载于:https://www.cnblogs.com/davidgu/p/5056593.html

你可能感兴趣的文章
2014.09线上课堂报名帖:敏捷个人手机应用使用
查看>>
C# 重启exe
查看>>
Web 服务器 之 简易WWW服务器的架设
查看>>
一种电子病历系统软件框架思想
查看>>
轻松破解NewzCrawler时间限制
查看>>
gDebugger 3.1.1 原版+破解
查看>>
C++ 对象的内存布局(上)
查看>>
在Outlook中用VBA导出HTML格式邮件
查看>>
搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门
查看>>
PHP——通过下拉列表选择时间(转)
查看>>
由1433端口入侵,浅谈sqlserver安全 (转)
查看>>
2个YUV视频拼接技术
查看>>
spring data实现自定义的repository实现类,实现跟jpa联通
查看>>
“惊群”,看看nginx是怎么解决它的
查看>>
Theano3.3-练习之逻辑回归
查看>>
利用RGB-D数据进行人体检测 带dataset
查看>>
live555的编译及使用
查看>>
C++builder XE 安装控件 及输出路径
查看>>
优点和阵列的缺点,并且一个链表
查看>>
CSS3透明属性opacity
查看>>