- 博客(30)
- 资源 (2)
- 收藏
- 关注
原创 C++数据结构十大经典排序算法
排序算法是《数据结构与算法》中最基本的算法之一。十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,时间复杂度为 O(nlogn)~O(n²)。非比较类排序:不通过比较来决定元素间的相对次序,其时间复杂度可以突破 O(nlogn),以线性时间运行。
2023-11-12 19:17:13
114
原创 C++ 观察者模式
/让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,//会通知所有观察者对象,使它们能够自动更新自己。//定义了一种一对多的依赖关系,
2022-08-07 16:57:59
250
原创 C++ 模板方法模式
/通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。//模板方法模式是通过把不变行为搬移到父类,去除子类中的重复代码来体现它的优势。//定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。//当不变的和可变的行为在方法的子类实现中混合在一起的时候。//模板方法使得子类可以不改变一个算法的结构。//即可重定义该算法的某些特定步骤。//不变的行为就会在子类中重复出现。...
2022-08-07 16:55:14
370
原创 C++ 状态模式
/把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。//状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。//当一个对象的内在状态改变时允许改变其行为。//这个对象看起来像是改变了其类。...
2022-08-07 16:46:01
137
原创 C++ 中介者模式
中介者模式一般应用于一组对象以定义良好但是复杂的方式进行通信的场合。以及想定制一个分布在多个类中的行为,而又不想生成太多的子类的场合。
2022-08-07 16:38:32
140
原创 C++ 迭代器模式
迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责。这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据。
2022-08-07 16:36:05
143
原创 C++ 解释器模式
解释器模式为文法中的每一条规则至少定义了一个类,因此包含许多规则的文法可能难以管理和维护。建议当文法非常复杂时,使用其他的技术如语法分析程序或编译器来处理。
2022-08-07 16:33:46
393
原创 C++ 智能指针
智能指针在C++中,动态内存的管理是通过一对运算符来完成的: new,在动态内存中为对象分配空间并返回一个指向该对象的指针,我们可以选择对对象进行初始化;delete,接受一个动态对象的指针,销毁该对象,并释放与之关联的内存。shared_ptr类shared_ptr允许多个指针指向同一个对象;make_shared函数最安全的分配和使用动态内存的方法是调用一个名为make_shared的标准库函数。此函数在动态内存中分配一个对象并初始化它,返回指向此对象的shared_ptr,make_sh
2022-03-31 15:12:40
277
原创 C++ 代理模式
代理模式有点像老大和小弟,也有点向分销商。主要解决的问题是为某些资源的访问、对象的类易用操作上提供方便使用的代理服务。而这种设计思想的模式经常会出现在系统中,或者组件中,它们都提供给我们一种非常简单易用的方式控制原本需要编写很多代码进行使用的服务类。class Subject{public: Subject(){} virtual ~Subject() {} virtual void show() {}};class RealSubject : publ
2022-03-30 16:16:02
800
原创 C++ 享元模式
享元模式,主要在于共享通用对象,减少内存的使用,提升系统的访问效率。而这部分共享对象通常比较耗费内存或者需要查询大量接口或者使用数据库资源,因此统一抽离作为共享对象使用。在享元模式的实现中需要使用到享元工厂来进行管理这部分独立的对象和共享的对象,避免出现线程安全的问题。...
2022-03-30 15:33:01
2028
3
原创 C++ 装饰器模式
装饰器模式装饰器模式主要解决的是直接继承下因功能的不断横向扩展导致子类膨胀的问题,用装饰器模式后就会比直接继承显得更加灵活同时这样也就不再需要考虑子类的维护。为了实现动态的给对象添加职能,即从外部给对象添加相关职能.为了解决新加类职责,继承实现的弊端. 而是通过组合来实现.抽象构件角色(Component)——定义抽象接口具体构件角色(ConcreteComponent)——实现抽象接口,可以是一组装饰角色(Decorator)——定义抽象类并继承接口中的方法,保证一致性具体装饰角色(Co
2022-03-29 18:02:16
424
原创 C++ 外观模式
外观模式外观模式也叫门面模式,主要解决的是降低调用方的使用接口的复杂逻辑组合。这样调用方与实际的接口提供方提供了一个中间层,用于包装逻辑提供API接口。有些时候外观模式也被用在中间件层,对服务中的通用性复杂逻辑进行中间件层包装,让使用方可以只关心业务开发。class LeafA{public: void DoA() {};};class LeafB{public: void DoB() {};};class LeafC{public: void DoC() {};};
2022-03-28 18:09:29
682
原创 C++ 组合模式
组合模式将对象组合成属性结构以表示‘部分-整体’的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。class Component{public: virtual void Add(Component *) {}; virtual void Remove() {}; virtual void Display() {};};class Composite : public Component{public: void Add(Component*) {}; v
2022-03-28 17:19:18
266
原创 C++ 桥接模式
桥接模式桥接模式的主要作用就是通过将抽象部分与实现部分分离,把多种可匹配的使用进行组合;在A类中含有B类接口通过构造函数传递B类的实现,这个B类就是设计的桥。实现:指的是抽象类和它的派生类用来实现自己的对象。class Abstraction{public: virtual void operation() = 0;};class AAbstraction : public Abstraction{public: void operation() {};};class B
2022-03-27 21:16:04
392
原创 C++ 适配器模式
C++适配器模式适配器模式的主要作用就是把原本不兼容的接口,通过适配器修改做到统一。类适配器:多重继承实现,并提供适配后的接口。class Adaptee{public: void SpecificRequest(){}};class Target{public: virtual void Request() {};};class Adapter : public Adaptee, public Target{public: void Request() { thi
2022-03-26 20:15:30
457
原创 C++ 单例模式
最近公司做项目用到的,顺便记录一下。只包含一个被称为单例的特殊类.它的目的是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享.懒汉式:第一次用到类的实例的时候才回去实例化 就是说它的返回值是当这个函数首次被访问时被创建的.class Singleton{public: static Singleton* GetInstance();private: Singleton(); static Singleton* instance;.
2022-03-12 17:08:54
1232
原创 C++ 原型模式
C++ 原型模式(Prototype)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.抽象基类:Prototype虚拟基类,所有原型的基类,提供Clone接口函数:纯虚函数,根据不同的派生类来实例化创建对象.#include <iostream>#include <string>class Prototype{public: Prototype(){} virtual ~Prototype() = 0; virtual Prototype* C
2022-03-09 17:18:16
829
原创 C++之建造者模式(Builder)
C++之建造者模式(Builder)建设代码结构,提升全局把控能力建造者模式属于创建性的设计模式,它将多个简单对象通过一步步的组装构建出一个复杂对象的过程,将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。具有良好的封装性和独立性,对客户隐藏了该产品是如何组装的,既产品内部的实现和组成模块之间相对独立,耦合度不高有利于程序扩展。#include <iostream>class Builder{public: virtual void BuildPartA(
2022-03-09 16:25:20
1070
原创 利用Opencv+Qt打开摄像头
利用Opencv+Qt添加摄像头1、opencv包添加链接描述2、安装Qt3、代码#pragma once#include <QWidget>#include "ui_camera.h"#include <QCameraInfo>#include <opencv2/objdetect/objdetect.hpp>#include <opencv2/highgui/highgui.hpp>#include "opencv2/ope
2022-02-22 15:01:12
3756
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人