給子定義類定義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,並使用剛建立...