C 給自定義類定義Hash計算

2021-10-13 07:21:04 字數 1077 閱讀 1228

給子定義類定義hash計算,是的可以使用標準庫的雜湊容器 unordered_set 和 unordered_map,有多重方法實現:1)給標準庫中的 hash / equal_to例項化乙個自定義類的型別;2)自定義函式物件

// 自定義銷售類

class sales_data

sales_data(const string bn, unsigned us, double re) : bookno(bn), units_sold(us), revenue(re) {}

//private:

std::string bookno;

unsigned units_sold = 0;

double revenue = 0.0;

};

// 測試資料

vectorsalesdata,

sales_data("book3"), sales_data("book4")};

vector> salesdatapari,

, 2},,};

// 測試函式

templatevoid comparetest(const s &sduset, const m &sdumap)

// 開啟std命名空間,以便特例化std::hash / std::equal_to

namespace std

};// 比較相等

template<>

struct equal_to

};} // 關std閉命名空間, 注意,沒有;

使用和測試

void hashwithstd()
// 用函式物件實現hash

class salesdatahash

};class salesdataequal

};

使用和測試

void hashwithfunctionobj()

Spark 自定義hash函式

之前在spark1.6中執行的 放在了spark2上去執行,發現執行的結果不一致,定位後發現是不同版本中,hash函式的實現方式不同,導致取數結果不同。區別為 spark1.6 版本為hashcode,2.x版本為murmurhash。如果在spark2上執行spark1編寫的 需要重新定義hash...

C 自定義List類

如下 using system using system.collections.generic using system.linq using system.text namespace myarraylist public myarraylist int capacity 索引器 public ...

C 自定義類排序

1 宣告乙個類 人物類 public class person 2 宣告乙個繼承了介面icomparer的類 比較人物類例項大小,實現介面icomparer public class personcomparer icomparer return 0 3 main函式,建立乙個list,並使用剛建立...