前两天摸鱼聊天的时候遇到一个问题,一个链表的函数中,有一个参数显得很奇怪 (大概是一个样子的)ListNode<T>*& l 这个参数l除了用了一个*之外还用了一个&,直觉上*&是一个解引用一个取地址,似乎应该相互抵消,但是那样这样的代码就毫无意义,既然没有意义作者也没有必要这样去写,因此这肯定是一 ...
分类:
其他好文 时间:
2019-10-07 23:29:27
阅读次数:
110
启 算法,问题之解法也 算法好坏的衡量标准:时间和空间,单位是对数、一次、二次、三次等 算法中处理的数据,输入方式都是左闭又开,类型就迭代器, 如:[first, last) STL中提供了很多算法,我们只研究感兴趣的几种 算法,问题之解法也 算法好坏的衡量标准:时间和空间,单位是对数、一次、二次、 ...
分类:
编程语言 时间:
2019-09-23 19:49:28
阅读次数:
148
稍微花了一点点时间看了一下老师推荐的博客:http://feihu.me/blog/2014/sgi-std-sort/,看完后无不赞叹STL追求效率之极致,STL的sort排序算法综合了三种排序快排,堆排和插入排序,被称为Introspective Sort(内省式排序),在算法内部根据自身不同的 ...
分类:
编程语言 时间:
2019-09-22 01:31:27
阅读次数:
92
map与set底层都是调用的RBTree 首先看RBTree RBTree 红黑树的特性: 1.根节点为黑色 2.新增节点一定是红色 3.节点只有红色或黑色两种颜色 4.两个节点颜色不能同为红 5.任意一条路径上的黑色节点个数相同 红黑树的节点设计: 1.表示节点颜色的变量color 2.链接左子树 ...
分类:
其他好文 时间:
2019-09-16 09:33:55
阅读次数:
115
纯虚析构函数 理论上来说,将一个函数声明为纯虚函数后,这个类即变为抽象类。纯虚函数只提供接口,而不提供实现,但纯虚析构函数一定要提供定义。这是由C++特性决定的,编译器对派生类的析构函数会进行扩展,以静态调用的方式调用其每一个虚基类和上基类的析构函数,尽管是一个抽象类,但仍然要为这个纯虚析构提供实现 ...
分类:
其他好文 时间:
2019-09-13 01:29:55
阅读次数:
113
deque deque是一种双向开头的现行连续空间 但它与vector有差异: 1.deque可以在O(1)的复杂度下进行头端插入与移除,而vector的头端操作效率极差 2.deque没有capacity概念。deque随时可以拼接一段新的连续空间。只有像vector这种可能出现空间不足的容器才需 ...
分类:
其他好文 时间:
2019-09-12 10:28:11
阅读次数:
94
近段时间看了侯捷老师的《STL源码剖析》,看第一遍的时候一头雾水,反复多看几遍,似乎明白了一些。因此将学到的知识做一个记录,也算是记录自己的学习过程。本系列博客主要记录一些宏观理解性的东西,具体的代码实现还是要仔细品味原书。概览 STL即C++标准模板库,主要由六大部件组成,分别是:分配器、容器、迭... ...
分类:
其他好文 时间:
2019-08-27 15:39:28
阅读次数:
104
partial_sort接受一个middle迭代器,使序列中的middle-first个最小元素以递增顺序排序,置于[first, middle)内。下面是测试代码: #include <iostream>#include <vector>#include <algorithm> using nam ...
分类:
编程语言 时间:
2019-02-01 18:02:02
阅读次数:
203
SLT简介 STL(Standard Template Library),即标准模板库,是一个高效的C++程序库。包含了诸多在计算机科学领域里常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。其核心思想就是泛化编程(generic program ...
分类:
其他好文 时间:
2019-01-07 21:13:19
阅读次数:
195
前言 迭代器是将算法和容器两个独立的泛型进行调和的一个接口. 使我们不需要关系中间的转化是怎么样的就都能直接使用迭代器进行数据访问. 而迭代器最重要的就是对 和`operator `进行重载, 使它表现的像一个指针. 类型 迭代器根据移动特性和实施操作被分为5类 1. input iterator( ...
分类:
其他好文 时间:
2018-12-12 00:21:29
阅读次数:
161