STL
文章平均质量分 59
阿_波_
这个作者很懒,什么都没留下…
展开
-
C++中泛型相应型别的获取
写在前面 在《STL源码剖析》中的第三章迭代器部分说到,在C++中STL的容器和算法是分开的,他们之间的连接是通过每一个容器所对应的迭代器(Iterator),那么在STL对应的算法中我们就会用到迭代器其相应的型别,那么问题就产生了。解决一、利用function template的参数推导(argument deducation)机制 什么是参数推导机制...原创 2018-10-17 22:30:27 · 3029 阅读 · 0 评论 -
C++中的rotate函数
写在前面在C++中rotate函数有多中重载类型,这里只讨论一种情况,当STL中对应容器的迭代器类型为ForwardIteartor以及更低的情况,我们不开辟新的空间,直接在容器上完成旋转,不借助任何其余空间。函数原型template <class ForwardIterator>inline void rotate(ForwardIterator first, For...原创 2018-10-30 19:06:18 · 10857 阅读 · 4 评论 -
C语言模拟实现memmove函数
函数原型:void *mommove(void *dest, const void *src, size_t count);将由src最指向内存开始的count个元素复制到dest所指向的内存区域mommove函数存在三个条件:1、当dest和src相同时不进行操作2、当dst大于src时,执行正向拷贝3、当dst小于src时,执行反向拷贝void *mommove...原创 2018-10-27 21:38:49 · 324 阅读 · 0 评论 -
C++中的power函数
在cmath头文件中存在函数pow,在stl_numeric.h中存在对于power的具体实现只看一下对于power的具体实现,之前不知道有没有听说过快速幂,power可以说就是快速幂的实现函数原型如下:template <class T, class Integer>inline T power(T x, Integer n) { return power(x,...原创 2018-10-27 20:35:21 · 30618 阅读 · 0 评论 -
C++实现introSort算法 (内省排序)
写在前面在STL的sort算法中,本以为是使用quick sort算法实现的,但是仔细一个实质上而是使用introSort算法实现的,这种算法可以根据递归的深度来决定是否还是使用quick sort,如果递归的深度过深,则在对应区间上使用heap sort算法来实现并且,我们知道在执行完多次qucik sort之后,数组相邻之间需要改动的并不是很多,如果我们继续递归下去,不仅仅是浪费空间,...原创 2018-10-31 18:11:19 · 1971 阅读 · 0 评论 -
c++中的仿函数
写在前面在c++的早期命名中,称作仿函数(functors),但是后来采用的新名称为:函数对象(function objects),可以理解为:一种具有函数特质的对象用处仿函数的作用,我们在stl中经常会用到仿函数,比如:#include <iostream>#include <thread>#include <algorithm>#in...原创 2018-10-26 21:08:03 · 919 阅读 · 0 评论 -
c++实现AVL_tree
写在前面AVL_Tree是一棵自平衡的二叉树,在树中任意节点的左右子树之间的高度差小于等于1,很好的弥补了二叉搜索树有可能出现不平衡的情况,只是在二叉搜索树的基础上添加了四种旋转操作,使二叉搜索树变成自平衡的二叉搜索树AVLTree的数据结构首先它是一个二叉树,那么他一定包含左右子节点的信息,并且为了方便进行高度的判断调整等,还要包含高度信息,最后还要有当前节点的数值信息,所以他的数据...原创 2018-10-23 19:29:57 · 777 阅读 · 0 评论 -
c++实现红黑树
现在只是简单的实现了红黑树的调整功能,其余功能还没有实现好,等后面的学习中再来添加#ifndef _RB_TREE_H_#define _RB_TREE_H_#include <iostream>typedef bool _color_type;const _color_type _color_red_ = false;const _color_type _colo...原创 2018-10-25 20:37:39 · 120 阅读 · 0 评论 -
STL中关于list容器的sort函数详解
写在前面因为在stl中stl_algo中提供有sort函数,他的函数原型:template <class RandomAccessIterator>inline void sort(RandomAccessIterator first, RandomAccessIterator last);template <class RandomAccessIterator, ...原创 2018-10-21 10:23:02 · 2483 阅读 · 1 评论 -
STL中haep的具体实现
写在前面heap并不属于STL的容器,但是由它实现了priority_queue,那么如果我们想要了解priority_queue的话,我们就必须要了解heap是如何实现的heap在没有比较函数约束的情况下,默认是max-heap,也就是我们所说的大顶堆简单的说这就是一个在用树来维护的数组,但是这里的树一定是一棵完全二叉树,完全二叉树:对于深度为K的,有n个结点的二叉树,当且仅当其每一...原创 2018-10-22 20:33:09 · 497 阅读 · 0 评论 -
C++中istream_iterator和ostream_iterator的用法
写在前面今天在看《STL源码剖析》的时候,看到了配接器中的ostream iterator,其中包含istream_iterator以及ostream_iterator以及更多,感觉这两个都十分重要,所以在这里介绍一下istream_iterator源码:template <class T, class Distance = ptrdiff_t> class ist...原创 2018-11-04 16:43:05 · 10680 阅读 · 0 评论