本部分是课程的最后一部分,前面STL的六大部件已经都介绍完毕,最后的内容包含一些标准库周边的内容,都整理到这里。
目录
一、一个万用的hashfunction
假设定义了一个这样的Customer类:
class Customer{
public:
string fname, lname;
int no;
};
那么自定义其哈希函数有三种方式:
//方式一:创建可调用类型
class CustomerHash
{
public:
std::size_t operator()(const Customer& c) const{
return ......
}
};
unordered_set<Customer, CustomerHash> custest;
//方式二:创建哈希函数
size_t customer_hash_func(const Customer& c){
return ......
}
unordered_set<Customer, size_t(*)(const Customer&)> custest(20, customer_hash_func); //注意这里调用了构造函数的不同版本
//方式三:特化标准库提供的hash<T>
namespace std
{
template<>
struct hash<Customer>
{
size_t
operator()(const Customer& c) const noexcept