(六)STL周边浅谈

目录

一个万用的hash_function

Tuple用例

type traits

cout

movable元素对于deque速度现的影响

测试函数


一个万用的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] = &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值