目录
一个万用的hash_function
将hash函数封装成类对象
- hash_val进行拆解传入参数,进行循环
- 每次拆解一个参数,都需要更新种子
- TR1的工具,)0x9e3779b9是黄金比例数字0.618
测试
当没有指定hash函数时,用默认的hash函数,但是针对特殊的类型,有自己特化的hash函数
Tuple用例
测试
- 实现,递归的继承实现自动添加任意多个函数,需要有终止条件无参数偏特化版本
- 元组大小决定由类的继承关系决定
type traits
测试,traits回答type的类型
区别拷贝和‘搬运’构造函数
cout
cout继承关系,把已有的类型放入cout才可以输出
movable元素对于deque速度现的影响
- 深浅拷贝
- 使用move后,保证原来的地址不在使用
测试函数
using namespace std; const long ASIZE = 500000L; //---------------------------------------------------- #include <iostream> #include <cstdio> //snprintf() #include <cstdlib> //RAND_MAX #include <cstring> //strlen(), memcpy() #include <string> using std::cin; using std::cout; using std::string; //以下 MyString 是為了測試 containers with moveable elements 效果. class MyString { public: static size_t DCtor; //累計 default-ctor 的呼叫次數 static size_t Ctor; //累計 ctor 的呼叫次數 static size_t CCtor; //累計 copy-ctor 的呼叫次數 static size_t CAsgn; //累計 copy-asgn 的呼叫次數 static size_t MCtor; //累計 move-ctor 的呼叫次數 static size_t MAsgn; //累計 move-asgn 的呼叫次數 static size_t Dtor; //累計 dtor 的呼叫次數 private: char* _data; size_t _len; void _init_data(const char *s) { _data = new char[_len+1]; memcpy(_data, s, _len); _data[_len] = &