C++候捷stl-视频笔记4

一个万用的hash function

在这里插入图片描述
哈希函数的形式,一种是一般函数(右边),一种是成员函数(左边),类的对象将成为函数对象
在这里插入图片描述
具体做法例子。直接把属性的所有hash值加起来,会在hashtable中会产生很多的碰撞,放在同一个bucket中的元素会多

另一种是使用可变模板参数来做的hash_val()函数,产生种子,经过复杂的操作,得到hash值。
版本1接受任意个数模版参数,版本2函数参数第一个是size_t(版本1产生的seed),重复调用版本2,直到剩一个模版参数,调用版本3
在这里插入图片描述
利用struct hash的偏特化来实现hash function
在这里插入图片描述
特化实现例子

Tuple用例

在这里插入图片描述
tuple用法示例
在这里插入图片描述
tuple<Head, Tail…> 继承 tuple<Tail…>
通过递归定义使得 tuple 类模板可以方便地处理可变数量的模板参数,每一层递归处理一个参数。这也是元编程中常见的技术,通过递归和继承来处理可变数量的参数。

type traits

在这里插入图片描述
默认的 __type_traits 进行了一系列泛化的设定
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
traits测试例子

type traits实现

is_void
在这里插入图片描述

// 通过范围偏特化实现remove const
template <typename _Tp>
struct remove_const
{ typedef _Tp type };
template <typename _Tp>
struct remove_const<_Tp const>
{ typedef _Tp type };
// remove volatile 同理

is_integral
在这里插入图片描述

cout

在这里插入图片描述
各种类对<<操作符的重载,以实现在标准输出设备上输出
在这里插入图片描述

movable元素对于不同容器速度效能的影响

在这里插入图片描述
由于vector的底层会两倍空间扩展,在扩展的时候会调用拷贝构造,所以这里调用次数为7194303,明显大于三百万
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
内存实际非连续的容器影响不大
在这里插入图片描述
在这里插入图片描述
move操作就是"浅拷贝",用新指针指向数据,打断旧指针

在这里插入图片描述
在这里插入图片描述
对于 vector 这样的容器,其用 move 就只是 swap 了三根指针
在这里插入图片描述
string带有movable的功能,从&&右值可以看出

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 12:06:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 12:06:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 12:06:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 12:06:03       20 阅读

热门阅读

  1. spring整合kafka

    2024-06-06 12:06:03       6 阅读
  2. go语言接口之接口类型

    2024-06-06 12:06:03       8 阅读
  3. 爬山算法的详细介绍

    2024-06-06 12:06:03       9 阅读
  4. spring 事务失效的几种场景

    2024-06-06 12:06:03       8 阅读
  5. C#的线程锁

    2024-06-06 12:06:03       8 阅读
  6. django连接达梦数据库

    2024-06-06 12:06:03       9 阅读
  7. Lua使用方式介绍

    2024-06-06 12:06:03       11 阅读
  8. k8s中pod如何排错?

    2024-06-06 12:06:03       7 阅读
  9. C++学习笔记“类和对象”;运算符重载

    2024-06-06 12:06:03       11 阅读
  10. 二叉树的层平均值-力扣

    2024-06-06 12:06:03       9 阅读
  11. SQL小白10分钟快速入门

    2024-06-06 12:06:03       9 阅读
  12. 通过电脑查看Wi-Fi密码的方法,提供三种方式

    2024-06-06 12:06:03       8 阅读