摘要: 仿函数性质 1.仿函数只为算法服务 2.必须重载 () functors 的可适配条件 stl 的 functors都有继承关系,自己写的函数对象没有继承就没有融入 stl,就没有被改造的机会 adapters 存在多种 adapters 有继承和内含2种方式,一般使用内含,在 A 内含 B,A 对 阅读全文
posted @ 2023-03-27 21:41 acwarming 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 首先要知道 stl 的算法是什么? 算法(Algorithm)是 function template,Algorithm 看不见容器(Containers),所以要从 iterator 取信息,iterator 必须回答 Algorithm 的问题来进行操作 iterator 的 iterator_ 阅读全文
posted @ 2023-03-20 23:41 acwarming 阅读(35) 评论(0) 推荐(0) 编辑
摘要: hashtable 一般使用的是链表法,以 G2.9 版本为例,buckets 大小从 53 开始,当总元素大于 buckets 时,选大概 2 倍的质数扩充 hashtable 有 6 个模板参数:value、key、hashfcn、extractkey、equalkey hashfcn:哈希函数 阅读全文
posted @ 2023-03-15 22:35 acwarming 阅读(17) 评论(0) 推荐(0) 编辑
摘要: set set、multiset是以红黑树为底层的,所以有自动排序的功能,有iterator可以遍历,但无法改变元素值,multiset的key可以重复 无法改值是因为 iterator 是 const,实际操作都是红黑树对象在做 map map、multimap一样是以红黑树为底层,有自动排序(对 阅读全文
posted @ 2023-03-15 15:40 acwarming 阅读(13) 评论(0) 推荐(0) 编辑
摘要: deque deque 有个以 vector 组成的控制中心 map ,意味这它会自动扩充,每个 vector 元素指向一个 buffer缓冲区,这个控制中心有 start 和 finish iterator分别有 node 指向第一个 buffer 和 最后一个,每个 buffer 也有 iter 阅读全文
posted @ 2023-03-12 22:04 acwarming 阅读(13) 评论(0) 推荐(0) 编辑
摘要: ##对vector的理解 vector就是可以扩充的array,它有三个指针:start、finish、end_of_storage,分别代表 vector 存放了数据的开始、结束和整个容量的尾巴,它扩充的时候也不是原地就扩充(一般是2倍扩充),而是会找新的满足扩充后容量的空间,如果没有容量能满足那 阅读全文
posted @ 2023-03-12 17:17 acwarming 阅读(14) 评论(0) 推荐(0) 编辑
摘要: ##iterator需要遵循的原则 iterator是算法和容器的桥梁,算法要知道要处理的容器范围,算法在操作的时候,很可能要知道这个iterator有哪些性质来做最佳化的动作 iterator至少要回答3个问题: 1.iterator_category 2.different_type 3.val 阅读全文
posted @ 2023-02-27 20:38 acwarming 阅读(11) 评论(0) 推荐(0) 编辑
摘要: ##list结构 ###内存大小 list里存放的数据就一个node,为link_node类型,最终是个指针,为4字节,所以list的sizeof为4 我们可以看到__list_node结构体,它是双向链表(记得要前闭后开,所以要在最后留一空白节点),里面存放数据data,但是可以看到它前后指针类型 阅读全文
posted @ 2023-02-24 10:10 acwarming 阅读(23) 评论(0) 推荐(0) 编辑
摘要: ##先谈operator new()和malloc() c++分配内存动作最终都会跑到malloc上,所以operator new里也是调用malloc 那malloc分配内存什么样子呢?如下图所示 蓝色块是实际大小,上下2个红色是cookie,作分界用,整个内存大小会调整到某个边界,所以有绿色的( 阅读全文
posted @ 2023-02-23 19:42 acwarming 阅读(28) 评论(0) 推荐(0) 编辑
摘要: #有哪六大部件? 容器(containers)、分配器(allocators)、算法(algorithm)、迭代器(iterator)、适配器(adapters)、仿函数(functors) #这些部件分别是干啥的? ##1.容器 容器就是数据结构,里面有list链表、queue队列等 容器用来放/ 阅读全文
posted @ 2022-11-23 18:10 acwarming 阅读(48) 评论(0) 推荐(0) 编辑