自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 设计模式-观察者模式

class MainForm : public Form{ TextBox* txtFilePath; TextBox* txtFileNumber; ProgressBar* progressBar; // 增加进度条 public: void Button1_Click(){ string filePath = txtFilePath->getText()

2025-03-30 17:05:27 855

原创 设计模式-策略模式

enum TaxBase CN Tax, US_TaX, DE_Tax, FR_Tax // 更改};class SalesOrder{ TaxBase tax;public: double CalculateTax(){ //... if (tax == CN_Tax){

2025-03-29 19:42:50 657

原创 设计模式-模板方法

// 程序库开发人员class Library{public: void Step1() { //... } void Step3() { //... } void Step5() { //... }};// 应用程序开发人员class Application{public: boo

2025-03-29 13:30:35 847

原创 设计模式-代理

在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等直接访问会给使用者、或者系统结构带来很多麻烦。// 以上方法不合适,性能、安全控制、分布式的原因导致拿不到RealSubject。解决:用Proxy代理。

2025-03-29 10:18:10 403

原创 设计模式-工厂

假如说分割器有多个具体的类型:BinarySplitter、TxtSplitter、PictureSplitter。这时候需要一个抽象基类ISplitter,其具体的类就要继承这个基类。一个类型要看到未来变化的需求,就要做抽象类、接口(面向接口编程),不要声明成具体的类,不然定死了没有支持未来的变化。

2025-03-28 19:10:50 588

原创 设计模式-单例

是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。。为什么会有人想要控制一个类所拥有的实例数量?最常见的原因是控制某些共享资源 (例如数据库或文件) 的访问权限。它的运作方式是这样的: 如果你创建了一个对象, 同时过一会儿后你决定再创建一个新对象, 此时你会获得之前已创建的对象, 而不是一个新对象。注意, 普通构造函数无法实现上述行为, 因为构造函数的设计决定了它总是返回一个新对象。

2025-03-28 15:54:19 839

原创 设计模式基础知识

1.依赖倒置原则 高层模块(稳定)不应依赖于底层模块(变化),二者都应该依赖于抽象。 抽象(稳定)不应依赖实现细节(变化),实现细节应该依赖于抽象(稳定)。2.开放封闭原则 对扩展开放,对更改封闭。 类模块应该是可扩展的(增加),但是不可修改。3.单一职责原则 一个类应该仅有一个引起它变化的原因。 变化的方向隐含类的责任。4.Liskow替换原则(LSP) 子类必须能替换它们的基类(IS-A)。

2025-03-28 14:05:52 193

原创 STL容器-set、map、multiset、multimap(源自STL源码剖析)

如果想要修正元素的键值,答案是不行,因为map元素的键值关系到map元素的排列规则。multimap 的特性以及用法与 map 完全相同,唯一的差别在于它允许键值重复,因此它的插人操作采用的是底层机制 RB-tree 的 insert_equal() 而非 insert_unique()。multiset 的特性以及用法和 set 完全相同,唯一的差别在于它允许键值重复,因此它的插人操作采用的是底层机制 RB-tree 的 insert_equal()而非insert_unique()。

2025-03-28 12:12:04 942

原创 STL容器-queue(源自STL源码剖析)

queue是一种先进先出(FirstIn FirstOut,FIFO)的数据结构。它有两个出口,形式如图4-19所示。queue允许新增元素、移除元素、从最底端加人元素、取得最顶端元素。但除了最底端可以加人、最顶端可以取出外,没有任何其它方法可以存取queue的其它元素。换言之,queue不允许有遍历行为。

2025-03-28 11:11:02 380

原创 STL容器-stack(源自STL源码剖析)

stack是一种先进后出(First InLast Out,FILO)的数据结构。它只有一个出口,形式如图4-18所示。stack允许新增元素、移除元素、取得最顶端元素。但除了最顶端外,没有任何其它方法可以存取stack的其它元素。换言之,stack不允许有遍历行为。将元素推人stack的操作称为push,将元素推出 stack的操作称为pop。public:// 以下完全利用Sequence c的操作,完成stack的操作。

2025-03-27 08:57:18 254

原创 STL容器-deque(源自STL源码剖析)

deque采用一块所谓的 map (注意,不是STL的map容器)作为主控,map其实是一个T**,对deque进行的排序操作,为了最高效率,可将deque先完整复制到一个vector。行元素的插人或移除操作,二在于deque没有所谓容量(capacity)观念,因为。vector是单向开口的连续线性空间,deque则是一种双向开口的连续线性空。身上,将vector排序后(利用STLsort算法),再复制回deque。也就是说它是一个指针,所指之物又是一个指针,指向型别为 т 的一块空间。

2025-03-26 09:31:55 670

原创 STL容器-list(源自STL源码剖析)

每一个设计过list的人都知道,list本身和list的节点是不同的结构,需要。insert()是一个重载函数,有多种形式,其中最简单的一种如下,符合以上所需。相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插。list迭代器必须有能力指向list的节点,并有能力进行。对于 “前闭后开”区间的要求,成为1ast迭代器,如图4-5所示。减、取值、成员取用”操作是指,递增时指向下一个节点,递减时指向上一个节点,于是,当先前测试程序连续插人了五个节点(其值为01234)之后,list的。

2025-03-25 13:45:55 931

原创 STL容器-vector(源自STL源码剖析)

还有备用空间,如果有就直接在备用空间上构造元素,并调整迭代器finish,使。小)一点的房子,可以,一切琐细得由客户端自己来:首先配置一块新空间,然后将。于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必因为害怕空间不足而。

2025-03-24 11:45:15 650

原创 C++:STL-容器概述

关联式容器用的多的有:set、map、multiset、multimap。(multi-意味着可以出现重复元素,key可以重复)序列式容器用的多的有:vector、list、deque、stack、queue。

2025-03-24 10:07:17 116

原创 C++程序员的电子书(后续还会更新)

考虑到百度网盘有时候不好用,不知道夸克网盘如何。

2025-03-22 19:22:13 239

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除