摘要: 空间配置器 allocator 只是基层内存配置/释放行为的一层薄薄的包装,没有任何效率上的强化。一般而言,C++ 内存配置操作和释放操作如下: class Foo{ ... }; Foo* pf = new Foo; // 配置内存,然后构造对象 delete pf; // 将对象析构,然后释放内 阅读全文
posted @ 2022-12-15 21:08 Leaos 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 1. 栈的实现 特点:先进后出、后进先出 1.1 顺序栈 顺序栈是依赖数组实现的。 其代码实现如下: class SequenceStack { public: SequenceStack(int size = 10); ~SequenceStack(); public: // 入栈 void pu 阅读全文
posted @ 2022-12-14 14:06 Leaos 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 1. 链表实现 特点: 每一个节点都是在堆内存上独立 new 出来的,节点内存不连续。即逻辑地址连续,而物理地址不连续。 优点: 内存利用率高,不需要大块连续内存 插入和删除节点不需要移动其它节点,时间复杂度 O(1) 不需要专门进行扩容操作 缺点: 内存占用量大,每一个节点多出存放地址的空间 节点 阅读全文
posted @ 2022-12-13 23:19 Leaos 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 1.数组实现 数组的特点:内存是连续的,即物理地址是连续的。 优点: 随机访问的时间复杂度为 O(1); 末尾位置增加元素的时间复杂度为 O(1); 访问元素前后相邻位置的元素非常方便; 缺点: 非末尾位置增加元素需要进行大量的数据移动,时间复杂度为 O(n); 搜索的时间复杂度: 无序数组采用线性 阅读全文
posted @ 2022-12-12 22:31 Leaos 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 概述 访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。例如处方单中的各种药品信息就是被访问的元素,而划价人员和药房工作人员就是访问者。访问者模式使得用户可以在不修改现有系统的情况下扩展 阅读全文
posted @ 2022-12-11 17:31 Leaos 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 概述 模板方法模式是结构最简单的行为型设计模式,在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供一个称之为模板方法的方法来定义这些基本方法的执行次序,而通过其子类来覆盖某些步骤,从而使得相同的算法框架可以有不同的执行 阅读全文
posted @ 2022-12-08 16:14 Leaos 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 概述 在策略模式中,可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法。在这里,每一个封装算法的类都可以称之为一种策略(Strategy),为了保证这些策略在使用时具有一致性,一般会提供一个抽象的策略类来做规则的定义,而每种算法则对应于一个具体策略类。 策略模式的主要目的是将算法的定义 阅读全文
posted @ 2022-12-06 21:25 Leaos 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 概述 状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。当系统中某个对象存在多个状态,这些状态之间可以进行转换,而且对象在不同状态下行为不相同时可以使用状态模式。状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象状态可以灵活变化。对于客户端而言,无须关心对 阅读全文
posted @ 2022-12-04 09:38 Leaos 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 概述 观察者模式是使用频率最高的设计模式之一,用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要 阅读全文
posted @ 2022-12-03 10:57 Leaos 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 概述 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原。当前很多软件都提供了撤销(Undo)操作,其中就使用了备忘录模式。 备忘录模式定义如下:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对 阅读全文
posted @ 2022-12-02 10:12 Leaos 阅读(80) 评论(0) 推荐(0) 编辑