《STL源码剖析》解读
本栏的内容和《C++ Templates》相辅相成,作为C++标准库最重要的组成部分,STL不仅仅是一个可复用的组件,也是一个包罗数据结构与算法的学习框架。
千瞱
世界上没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程。
展开
-
STL容器篇:set
1 认识set和multisetset名为集合,顾名思义只有键值,而不像map那样既有键值(key)又有实值(value)。而且STL中的set有个特性是所有的元素都会根据元素的键值自动被排序。由于RB-tree是一种平衡二叉树,自动排序的效果很不错,因此标准的STL set以RB-tree作为底层机制。我们可以通过set的迭代器修改set元素的值么?不行!因为set元素值就是其...原创 2019-04-14 18:04:28 · 347 阅读 · 0 评论 -
STL algorithm学习笔记
本篇主要总结在C++标准库algorithm头文件下的函数的使用方法1 lower_bound和upper_bound(应用于有序区间)template <class ForwardIterator, class T>inline ForwardIterator lower_bound(ForwardIterator first, ForwardIterator las...原创 2019-04-14 17:50:42 · 398 阅读 · 0 评论 -
C++ STL基本思想
写在前面:STL的相关特点总结数据结构和算法的分离 STL不是面向对象的 STL是基于模板的,因此其组件具有广泛的通用性 模板并不是可执行代码,如果一个模板从来没有被使用过,那么将会被编译器忽略,不会生成可执行代码,即使模板本身存在错误,包含这个模板的程序仍然可以编译和运行。本节关键字 模板库的划分、STL之父、类模板实例化、类模板的成员函数、类模板的静态成员、函数模板、类模板...原创 2018-03-16 20:59:54 · 1300 阅读 · 0 评论 -
STL 空间配置器篇
如果你不曾仔细研读STL源码,你是不会发现在STL还会有空间配置器的存在的,因为它是隐藏在一切组件(特别是容器)的背后,默默工作。如果你需要自己实现一个STL,最先设计的就应该是空间配置器,因为它是一切STL的基础。零、为何STL要单独设计空间配置器?一开始我有过这样的疑惑:为什么STL不直接使用malloc和free操纵内存即可,为什么还要设计空间配置器呢?这不是多此一举吗?后来在学...原创 2018-10-01 11:50:22 · 2551 阅读 · 1 评论 -
C++中new、operator new和placement new的区别
参考博文:http://www.codeceo.com/article/cpp-new-keyword.htmlhttps://blog.csdn.net/zhangxinrun/article/details/5940019 new和delete是C++中的表达式,用于创建一个新的对象。它们是对堆中的内存进行申请和释放,而且这两个都是不能被重载的。要实现不同的内存分配行为,需要...原创 2018-07-26 14:37:23 · 5231 阅读 · 7 评论