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 模板和泛型编程)实例化

C++ Primer 5th笔记(chap 16 模板和泛型编程)可变参数模板

C++ Primer 5th笔记(chap 16 模板和泛型编程)模板实参