![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
浅时光〃
这个作者很懒,什么都没留下…
展开
-
C++内存池的设计及思想
内存池的引入——默认内存管理函数的不足new/delete或malloc/free分配和释放内存时会有一些额外开销 系统在接收到分配内存的请求时,首先要查找内部维护的内存空闲块表,并需要根据一定的算法,找到合适大小的空闲内存块。如果该空闲的内存块过大,则需要切割成已分配的部分和较小的内存块。然后系统更新内存空间块表,完成一次分配。在释放内存时,系统将释放的内存块重新加入到空闲内存块表中。也有...原创 2019-08-13 14:35:15 · 187 阅读 · 0 评论 -
顺序容器——vector
1、vector定义及概述vector与array非常相似,唯一的区别在于灵活性,数组是静态空间,一旦定义就不能改变,变大变小都需要客户端自己重新配置新的空间,然后将元素从旧址搬到新址,再把原来的空间还给系统。vector是动态空间,随着元素的加入,他的内部机制会自行扩充空间以容纳新元素。1.vector的底层实现vector所采用的是一个连续的线性空间,以两个迭代器start和f...原创 2019-08-20 17:11:02 · 188 阅读 · 0 评论 -
设计模式——工厂模式
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过一个共同的接口来执行新创建的对象。工厂模式作为一种创建模式,一般在用在创建复杂对象,在创建简单对象时,还是建议直接使用new完成一个实例对象的创建。1.简单工厂模式特点:需要在工厂类中做判断,从而创造出相应的产品,当增加新产品时,需要修改工厂类。使用简单工厂模式,我们只需要知道具体的产品型号就可以创建一个产品。缺点:工厂...原创 2019-08-15 15:37:17 · 124 阅读 · 0 评论 -
顺序容器——list
list相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个空间。因此,list对于空间的利用有绝对的精准,一点也不浪费。而且,对于任何位置的元素的插入或删除,它的时间复杂度都为O(1)。list容器的底层实际上是一个双向循环链表。list本身和list的节点的结构是不同的,需要分开设计list的节点定义:template&l...原创 2019-08-21 16:32:20 · 528 阅读 · 0 评论 -
顺序容器——deque
deque的底层实现是一个双端队列,即是一种双向开口的连续线性空间,在其头部和尾部都可以做插入和删除的操作,且时间复杂度都为O(1)。deque没有容量观念,因为它是动态地以分段连续空间组合而成,随时可以增加一段新的空间并组合起来。1、deque容器的优缺点优点:支持快速的头插尾插和头删尾删以及直接访问缺点:按位置插入和删除的时间复杂度大2.deque的适用场景 需要在两...原创 2019-08-21 18:35:14 · 314 阅读 · 0 评论 -
设计模式——单例模式
单例模式,即保证一个类仅可以有一个实例化对象,并且提供一个可以访问它的全局接口。主要解决的问题:一个全局使用的类频繁的创建与销毁什么时候使用:想控制实例数目,节省系统资源时单例模式的实现方式分为两种,懒汉和饿汉单例模式的实现要点:全局只有一个static特性实例,同时禁止用户自己声明并定义实例 线程安全 禁止赋值和拷贝 用户使用static成员函数通过接口获取实例1.懒...原创 2019-08-17 16:06:09 · 99 阅读 · 0 评论 -
设计模式——观察者模式
观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都要得到通知并自动更新。在观察者模式中有两种角色:观察者和监听者观察者:通知对该事件感兴趣的监听者监听者:处理事件事件对于监听者可以是1对1,也可以是1对多的关系举个例子:教室里有几个学生,趁着老师没在,各自做着与学习无关的事,小李在玩手机,小王在看小说,小刘在打游戏,他们让小胡帮忙看着...原创 2019-08-17 17:52:34 · 95 阅读 · 0 评论 -
关联容器——(set/multiset)
关联容器与序列容器有着根本性的不同,序列容器的元素是按照在容器中的位置来顺序保存和访问的,而关联容器的元素是按关键元素来保存和访问的。关联容器支持高效的关键字查找与访问。set实际上是一个单集合,它的底层是由红黑树实现的。set的特性是,所有元素都会根据元素的键值自动被排序。set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set...原创 2019-09-15 18:31:41 · 185 阅读 · 0 评论 -
关联容器——(map/multimap)
1、map的特性map的特性是所有元素都会根据元素的键值自动被排序,map的所有元素都是一对的(pair),同时拥有实值(value)和键值(key)。pair中的第一个元素被看作键值,第二个元素被看做实值,且map不允许两个元素拥有相同的键值。map和list拥有相同的某些性质,当它对容器元素进行添加或删除时,操作之前的所有迭代器在操作完成值后依然有效。2、map的初始化map&...原创 2019-09-16 11:56:22 · 180 阅读 · 0 评论