7-分配器、list不能用全局sort、
1 有默认分配器:
既然有默认分配器,那就有其它分配器,而更高阶就是自己写分配器。
下面使用list(双向链表),搭配其它分配器试试,很自然的想法
其它分配器有7个,mt:multithread分配器,因为分配器是管理内存的(内存分配器),所以后面的测试可以用push_back
真正要做效率测试是没那么简单的(如何做?)
问题:是否可以直接使用分配器
解答:可以,分配器是一个类
deallocate需要还当初要的个数
这个课没有输出的结论
2 库文件布局:
3 OOP和GP
first + (last-first)/2,随机访问迭代器,这句话就是list不能用全局sort的原因
list为什么不能用全局sort?它的迭代器不能+5,跳到很后面
GP:泛型编程,data和函数分开来
vector和deuqe自身都没有排序函数,
GP的好处:
min的源代码看起来好简洁。仿函数作用于算法
算法的实质无非就是比大小。
右下角的max接口参数中有个仿函数(划重点:仿函数可以用作参数,因为它是一个像函数的对象)
字符串比大小:默认一个字符一个字符比,不是按长度比,如果要按长度比,就要自己写仿函数。
4 泛化、全特化、偏特化
不能被重载的操作符:. .* :: ? :
5 new最终调用malloc,
malloc最终调用不同系统的system api
malloc给你的东西远比你要的东西要多。
分配器的实现:最重要的函数是allocate和deallocate,allocate调用operator new,deallocate调用operator delete
BC5、G2.9对allocate的实现又不一样。
后面讲的很好,但还是先跳过。
6 容器之间的关系与分类(出来了之前没怎么提到过的红黑树等)
heap里面有一个vector
slist == forward list,hash_set改名为unordered_set等
7 深度探索list
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义