C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板特例化
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板特例化相关的知识,希望对你有一定的参考价值。
1. 定义一个特例化版本, 模板参数为 Sales data
// 打开std 命名空间, 以便特例化 std::hash
namespace std {
template struct hash<Sales data> {
// 用来散列一个无序容器的类型必须要定义下列类型
typedef size_t result_type;
typedef Sales_data argument_type; / / 默认情况下, 此类型需要==
size_t operator ( ) (const Sales_data & s ) const;
//类使用合成的拷贝控制成员和默认构造函数
size_t hash<Sales_data>::operator () (const Sales_data& s ) const{
return hash<string> ( ) (s.bookNo) ^
hash<unsigned> ( ) (s.units_sold) ^
hash<double> ( ) (s.revenue);
}
} //关闭 std 命名空间; 注意: 右花括号之后没有分号
2. 声明特殊实例 hash<Sales_data>是 Sales_data 的友元
template <class T> class std::hash; // 友元声明所需要的
class Sales_data {
friend class std::hash<Sales_data>;
// 其他成员定义, 如前
}
3. unordered_multiset<Sales_data> SDset;
以上是关于C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板特例化的主要内容,如果未能解决你的问题,请参考以下文章
C++ Primer 5th笔记(chap 16 模板和泛型编程)std::move
C++ Primer 5th笔记(chap 16 模板和泛型编程)模板特例化
C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板特例化
C++ Primer 5th笔记(chap 16 模板和泛型编程)实例化