赞
踩
- #include <iostream>
- #include <unordered_set>
- #include <string>
- #include <functional>
- using namespace std;
- class Customer {
- public:
- std::string fname, lname;
- double sour;
-
- Customer(std::string fn, string ln, double s)
- :fname(fn), lname(ln), sour(s)
- {}
- };
- //用来计算Hash
- template <typename Type>
- inline void hash_combine(std::size_t& seed,const Type& val) {
- seed ^= hash<Type>()(val) +
- 0x9e3779b9 +
- (seed << 6) +
- (seed >> 2);
- }
- template <typename Type>
- inline void hash_val(std::size_t& seed, const Type& val) {
- hash_combine(seed, val);
- }
- template <typename t1, typename... Type>
- inline void hash_val(std::size_t& seed, const t1& val, Type& ... args) {
- hash_combine(seed, val);
- hash_val(seed, args...);
- }
- template <typename... Type>
- inline size_t hash_val(const Type& ... args) {
- std::size_t seed = 0;
- hash_val(seed, args...);
- return seed;
- }
- struct Hash_ {
- public:
- std::size_t operator()(const Customer& val)const {
- return hash_val(val.fname, val.lname, val.sour);
- }
- };
- int main() {
- const Customer pp("111","2222,",52.0);
- cout << Hash_()(pp) << endl;
- const Customer pp1("111", "asdfasdfasdfas,", 52.0);
- cout << Hash_()(pp1) << endl;
- const Customer pp2("adsfasdfa", "2222,", 52.0);
- cout << Hash_()(pp2) << endl;
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。