第七章:仿函数 7.1、仿函数(函数对象)概观 STL仿函数的分类,若以操作数(operand)的个数划分,可分为一元和二元仿函数,若以功能划分,可分为算术运算(Arithmetic)、关系运算(Rational)、逻辑运算(Logical)三大类。任何应用程序欲使用STL内建的仿函数,都必须含人< ...
分类:
其他好文 时间:
2019-12-25 01:49:45
阅读次数:
108
第五章、关联容器 5.0、关联容器 标准的STL关联式容器分为set(集合)和map(映射表)两大类,以及这两大类的衍生体multiset(多键集合)和multimap(多键映射表)。这些容器的底层机制均以RB-tree(红黑树)完成。RB-tree也是一个独立容器,但并不开放给外界使用。 SGIS ...
分类:
编程语言 时间:
2019-12-25 01:42:39
阅读次数:
98
1、容器的概观与分类 所谓序列式容器,其中的元素都可序(ordered)【比如可以使用sort进行排序】,但未必有序(sorted)。C++语言本身提供了一个序列式容器array,STL另外再提供vector,list,deque,stack,queue,priority-queue 等等序列式容器 ...
分类:
其他好文 时间:
2019-12-22 12:53:43
阅读次数:
93
Ubuntu版本信息 然后STL源码位置就在 /usr/include/c++/7/bits /usr/include/c++/7.4.9/bits 这两个文件下都有 然后我日常写程序用的Windows10下的Ubuntu子系统STL源码路径也是一样的。 VS下要看源码就更简单了 新建项目,包含要看 ...
分类:
系统相关 时间:
2019-12-14 19:06:59
阅读次数:
113
最近在Bilibili上看到不少侯捷老师C++的视频教程,侯捷老师翻译了很多C++的经典书籍,比如《Essential C++中文版》、《STL源码剖析》,也写了《深入浅出MFC 第二版》。使用到multiset这个关联容器时,本来以为Visual Studio2017中会提供#include <m ...
分类:
编程语言 时间:
2019-12-08 12:43:51
阅读次数:
105
vector在push_back时,如果是自定义的数据结构,它会调用这个结果的拷贝构造函数来初始化vector中的存储空间,如果需要用push_back()需要自己实现拷贝构造函数!具体vector中是怎么push_back可以查看stl源码剖析中的具体实现。 如果注释掉test的拷贝构造函数,pu ...
分类:
其他好文 时间:
2019-11-06 16:34:50
阅读次数:
113
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 ...
分类:
编程语言 时间:
2019-11-03 18:13:10
阅读次数:
75
在STL源码剖析中有提到operatornew这个函数,然后也有说道new的下面会调用operatornew,博主觉得这段话有问题,原因有二:1、operator是操作符的关键字,比如我们要重载一个操作符,我们的写法肯定是operatorxxx(xxx,xxx....),所以书中提到的调用operatornew,我并不赞同,我觉得new等同于operatornew2、在C/C++里面,调用一般是涉
分类:
其他好文 时间:
2019-10-31 18:32:22
阅读次数:
94
我们在学习序列式容器时,我们经常会遇到这三个函数:uninitialized_copy、uninitialized_fill、uninitialized_fill_n。在那时我们只是仅仅知道这些函数的功能,至于它们是如何实现的,我们并没有深究。在这节,我们花点时间摘下这几个函数的面具,看看它们不为人 ...
分类:
编程语言 时间:
2019-10-29 13:31:10
阅读次数:
102
list就是链表的实现,链表是什么,我就不再解释了。list的好处就是每次插入或删除一个元素,都是常数的时空复杂度。但遍历或访问就需要O(n)的时间。 List本身其实不难理解,难点在于某些功能函数的实现上,例如我们会在最后讨论的迁移函数splice()、反转函数reverse()、排序函数sort ...
分类:
其他好文 时间:
2019-10-26 17:35:16
阅读次数:
103