随笔分类 -  从零开始写STL

摘要:``` cpp static const int _stl_num_primes = 28; template> class hashtable; ministl::vector prime_list = { 53, 97, 193, 389, 769, 1543, 3079, 6151, 12289, 24593, 49157, 98317, 196613, 393241, ... 阅读全文
posted @ 2018-04-18 20:04 joeylee97 阅读(289) 评论(0) 推荐(0)
摘要:any class any; (since C++17) The class any describes a type safe container for single values of any type. (1) An object of class any stores an instanc 阅读全文
posted @ 2018-04-18 20:03 joeylee97 阅读(501) 评论(0) 推荐(1)
摘要:``` cpp class string { public: typedef size_t size_type; typedef char iterator; typedef char value_type; private: char start, end_of_storage, End; std 阅读全文
posted @ 2018-04-18 20:03 joeylee97 阅读(275) 评论(0) 推荐(0)
摘要:tuple Class template std::tuple is a fixed size collection of heterogeneous values. It is a generalization of std::pair. 可以用来在bind中存储函数指针和参数 实现思路 不定参数 阅读全文
posted @ 2018-04-18 20:03 joeylee97 阅读(333) 评论(0) 推荐(0)
摘要:从零开始写STL 智能指针 智能指针的分类及其特点: scoped_ptr:初始化获得资源控制权,在作用域结束释放资源 shared_ptr: 引用计数来控制共享资源,最后一个资源的引用被释放的时候会析构 unique_ptr: 只能有一个持有资源引用的对象 weak_ptr:eak_ptr也维护了 阅读全文
posted @ 2018-03-29 17:25 joeylee97 阅读(298) 评论(0) 推荐(0)
摘要:function C++11 将任意类型的可调用(Callable)对象与函数调用的特征封装到一起。 这里的类是对函数策略的封装,将函数的性质抽象成组件,便于和algorithm库配合使用 基本运算符 和 基本比较符号组件 cpp template class unary_negate : publ 阅读全文
posted @ 2018-03-29 16:56 joeylee97 阅读(283) 评论(0) 推荐(0)
摘要:这一部分只要把搜索树中暴露的接口封装一下,做一些改动。 set源码剖析 map 二叉搜索树中存储的元素—map_pair map源码 阅读全文
posted @ 2018-03-28 16:55 joeylee97 阅读(194) 评论(0) 推荐(0)
摘要:二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 平均情 阅读全文
posted @ 2018-03-28 15:22 joeylee97 阅读(933) 评论(0) 推荐(0)
摘要:从零开始写STL—栈和队列 适配器模式 意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。 何时使用: 1、系统需要使 阅读全文
posted @ 2018-03-28 11:41 joeylee97 阅读(290) 评论(0) 推荐(0)
摘要:从零开始写STL 内存部分 内存分配器allocator 内存分配器是什么? 一般而言,c++的内存分配和释放是这样操作的 class Foo{ //...}; Foo pf = new Foo;//配置内存,然后建构对象 delete pf; //将对象解构,然后释放内存 其中的 new操作内含两 阅读全文
posted @ 2018-03-27 11:27 joeylee97 阅读(3875) 评论(4) 推荐(0)
摘要:从零开始写STL 容器 双端队列 什么是双端队列?在介绍vector源码,我们发现在vector前端插入元素往往会引起大量元素的重新分配,双端队列(deque)就是为了解决这一问题,双端队列中在首端和末端插入元素的时间复杂度都为O(1),也许你会说链表不行吗,但是其实链表存在一定的缺陷,比如每个结点 阅读全文
posted @ 2018-03-20 19:55 joeylee97 阅读(508) 评论(0) 推荐(0)
摘要:从零开始写STL 容器 list List 是STL 中的链表容器,今天我们将通过阅读和实现list源码来解决一下问题: List内部的内存结构是如何实现的? 为什么List的插入复杂度为O(1)? 为什么List的size()函数复杂度为O(n)? list 容器的幕后英雄 list 结点 作为一 阅读全文
posted @ 2018-03-12 16:08 joeylee97 阅读(412) 评论(0) 推荐(0)
摘要:从0开始写STL—容器—vector vector又称为动态数组,那么动态体现在哪里?vector和一般的数组又有什么区别?vector中各个函数的实现原理是怎样的,我们怎样使用会更高效? 以上内容我们将通过写一个自己的vector来进行学习 typedef 简析 在容器类的最前面我们会看到许多的t 阅读全文
posted @ 2018-03-12 11:53 joeylee97 阅读(934) 评论(0) 推荐(0)