![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++语言相关
文章平均质量分 62
qq_38212976
这个作者很懒,什么都没留下…
展开
-
STL算法之sort源码
总体上来说sort在快排基础上做了以下几点优化: pivot选取,取区间的首,中间,尾部三点中值,避免快排算法恶化 快排采用分而治之的思想,将待排序容器分为若干个区间,由于采用的时递归实现,当区间个数太多,导致效率下降。这里当区间大于lg(last - first) * 2时,采用堆排序来优化。 最后,当区间元素个数小于16时,此时区间元素已大致有序,采用插入排序,时间复杂度可达到O(n); std::sort的代码如下: template <class RandomAccessIterator&原创 2021-10-04 21:11:32 · 251 阅读 · 0 评论 -
STL之容器源码阅读
开胃菜-内存基本处理工具 <memory> 头文件包括 <stl_construct.h> 定义了全局函数construct() 函数和destory() 函数,负责对象的构造和析构 <stl_alloc.h> 定义了一、二级配置器,配置器名为alloc <stl_uninitialized.h> 定义了全局函数,用来填充(fill)或赋值(copy)大块内存数据 uninitialized_copy() uninitialized_fill() un原创 2021-10-04 19:36:48 · 151 阅读 · 0 评论 -
STL之迭代器及traits技法
设计模式中迭代器模式定义:提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴露该聚合物的内部表述方式。 STL中有5中迭代器,分别为 input_iterator_tag 输入迭代器 ouput_iterator_tag 输出迭代器 forward_iterator_tag 前向迭代器 如单向链表 bidirectional_iterator_tag 双向迭代器 双向链表 random_access_iterator_tag 随机迭代器 如vector中的迭代器 关系如下:原创 2021-10-04 19:06:42 · 95 阅读 · 0 评论 -
C++内存管理总结
为什么要进行内存管理? 1. C++内存管理提供的基本组件 2. 自己实现per-class allocator 2.1 version1 2.2 version2 加入embeded pointer 节省next指针的开销 2.3 抽象为allocator 2.4 Macro 替换 3.GNU2.9 alloc实现详解原创 2021-09-30 12:28:29 · 105 阅读 · 0 评论