自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式--装饰模式(C++实现)

#include<iostream>#include<string>// abstract Classclass shape{public: shape() {} virtual ~shape() {} virtual void decorateMethod() = 0;};//Concrate Classclass circle :public shape{public: circle(std::string iName):shape(),sName.

2021-10-24 14:39:11 179

原创 设计模式--外观模式(c++实现)

/********FacedDP Test**********/#include<iostream>//Abstract Interfaceclass shape{public: shape() = default; virtual ~shape() = default; virtual void Draw() = 0;//the Interface Method};//Concrete Classclass Circle :public shape{public.

2021-10-24 13:35:17 139

原创 设计模式--适配器模式(C++实现)

定义:适配器模式是一种结构型设计模式,他主要是将一个类接口转换成客户端希望的另一个类接口。该设计模式较为简单,但是却很常用。#include<iostream>#include<string>using namespace std;class InterfaceA{public: virtual void FuncA() { cout << "InterFaceA Method: FuncA" << endl; }};cla

2021-10-11 21:43:30 492 1

原创 设计模式--原型模式(c++实现)

原型模式定义:用原型实例通过拷贝方式创建新的对象,是一种创建型设计模式(至此,五种创建型设计模式就全部介绍完了(*^__^*) )//原型模式示例代码#include <iostream>using namespace std;class Prototype{public: Prototype() = default; ~Prototype() = default; virtual Prototype* clone() = 0;};class Concre.

2021-09-13 21:12:04 205

原创 设计模式--建造者模式(C++实现)

创建型设计模式共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。建造者模式:适用于复杂对象的构建,可以将其一步一步的构造出来,能够更精细的控制构建过程(每一步都可以控制)。//建造者模式示例代码#include<iostream>using namespace std;class Builder{public: virtual void buildHead() {}; virtual void buildBody() {}; virtual voi

2021-09-12 16:57:05 442

原创 设计模式--策略模式&模板模式(C++实现)

1.策略模式:在开发过程中,常常遇见实现某一功能有多种算法策略的情况,可以根据不同的业务场景选择不用的策略。策略模式就是将每种算法封装为一个策略,各个策略之间可以相互替换。//策略模式示例代码#include<iostream>using namespace std;//策略类(抽象类)class Strategy{public: Strategy() = default; ~Strategy() = default; virtual void StrategyFu

2021-09-08 23:00:12 362

原创 设计模式--单例模式(c++实现)

定义:顾名思义,确保一个类在任何情况下都只有一个实例。#include<iostream>using namespace std;class SingletonDP{public: static SingletonDP* GetInstance();private: SingletonDP() { cout << "Constructor" << endl; };//构造函数私有 static SingletonDP* pSingle

2021-09-07 22:06:38 125

原创 设计模式 -- 工厂模式(C++实现)

前言:工厂模式是创建型设计模式,提供一种创建对象的方式。本文主要介绍简单工厂模式和工厂方法模式。简单工厂模式该种模式由工厂对象决定创建哪一种产品类的实例,该工厂类可以直接被外部调用。//简单工厂模式代码示例#include<iostream>#include<string>using namespace std;//产品抽象类class Animal{public: virtual void AnimalName() = 0;};//具体产品类1

2021-09-06 22:32:49 796

原创 const char*p 、char * const p、char const *p

const char * p 和char const *p 表达的含义一致,即指向常量的指针(是个指针)从上面的程序中可以看到,常量指针指向字符数组的第一个元素,为‘h’,随后,我们将字符数组的第一个元素更改为'K',然后输出*p可以看出此时常量指针仍然指向数组第一个元素,此时第一个元素为K。从上面的程序中可以看出,当我们让常量指针指向另一个值时,会出现报错:不能给常指针量复制。...

2018-10-09 11:20:38 1815

原创 指针和引用的区别

1.指针:指针是一个变量,该变量存储的是一个地址,指向内存的一个存储单元。   引用:与原来的变量实质是同一个东西,只不过是变量的另一个别名。 3.指针可以有多级,即可以有指针的指针,int **p;    引用只能是一级,即不可以有引用的引用4.指针的值可以为NULL(空),但是引用在定义是必须初始化,不能为空。5.指针的值在初始化后可以改变,即可以指向其他存储单元,...

2018-09-28 16:46:51 292

转载 HTTP

get和post声明:图片转载自:http://www.w3school.com.cn/tags/html_ref_httpmethods.asp注意:对get有2k的长度限制,一般是浏览器对其进行的限制。 https和http https是http+ssl 是http的安全版 是加密传输,端口号是443http超文本传输,是明文传输,端口号是80TCP/IP...

2018-09-18 10:38:52 175

原创 c++中的编译、链接和执行

1.编译与链接的区别:预处理:处理宏定义指令#define 、头文件#include等#include&lt;filename&gt; ,尖括号表示系统提供的头文件,直接去系统目录查找;#include“animal.h”,双引号表示自己编写的头文件,先在工程目录里面查找,找不到再到系统目录查找。预编译程序所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义...

2018-09-03 14:29:24 1734

原创 虚函数

1.什么是虚函数 定义:在某基类中声明为 virtual并在一个或多个派生类中被重新定义的成员函数。#include&lt;iostream&gt;using namespace std;class A{pubulic: virtual void Printfun() {cout&lt;&lt;"This is class A"&lt;&lt;end...

2018-08-28 17:26:46 565

原创 c++内存分配

0.写在前面在c++编程时,常常会涉及到内存分配的问题,如动态创建数组。令人头大!如果内存分配不当则会产生堆栈溢出、缓冲区溢出、野指针等使整个程序崩溃…… 1.内存分配的几种形式BBS(Block Start by Symbol) :存放未初始化的全局或静态变量,静态内存分配,结束后系统自动释放资源; 数据段:存放已经初始化的全局和静态变量,也是静态内存分配; 代码段:存放...

2018-08-26 22:39:34 306

原创 数组与指针的区别

通常,我们可能习惯性的认为数组名就是指针,其实不然。数组名在大多数的情况下隐式转换成指针。当遇到如下几种情况是时,两者之间不能混用:(已知定义数组int a[2])1.sizeof(a),此时a就是int数组类型,不再隐式转换成指针。2.&amp;a ,此时表示取数组a中元素地址,不是指针的指针!举一个常见的例子:#include&lt;iostream&gt;using namespace s...

2018-06-25 10:57:32 246

原创 常见排序算法--合并排序

思路:将一个无序的序列分组,直至分为每两个元素一组(如果有单个元素剩余,则可以剩余的单个元素自己一组),小组内排序,然后合并成一个有序的序列。例子: 排序过程如图所示:图片摘选自:https://blog.youkuaiyun.com/ZY_cat/article/details/78404257程序实现:#include &lt;iostream&gt; using namespace std;voi...

2018-05-29 10:19:55 15515 1

原创 常见排序算法--希尔(shell)排序

原理:一般,讲序列分成n/2组,然后进行排序,后再分为(n/2)/2组,再进行排序,以此类推。例子:63 92 27 36 45  71  58 7分组1次:63 92 27 36 45  71  58 7   --》排序:45 71 27 7 63  92  58 36分组2次:45 71 27 7 63  92  58 36  --》排序:27  7   45 36 58 71 63  92最...

2018-05-23 21:49:11 194

转载 常见排序算法--快速排序

原理:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。以一个数组...

2018-05-23 20:41:00 256

原创 常见排序算法--冒泡排序

原理:从数组第一个元素开始,与他后一位元素相比较,如果比后面元素大,就交换两者位置,把最大的放在最后一位,然后第二轮比较0-n-1个元素,把最大的放在倒数第二个位置,以此类推。例子:数组{32,10,55,97,68,4}第一次排序:10 32 55 68 4 97第二次排序:10 32 55 4 68 97第三次排序:10 32 4 55 68 97第四次排序:10  4 32 55 68 97...

2018-05-23 18:48:37 299

原创 常见排序算法--插入排序

原理:先处理第一个元素,然后处理第二个元素,使其插入到合适的位置,使前面的序列有序,然后处理第三个元素,使其插入前两个元素中合适位置使其有序,以此类推,使其有序。举例:数组[32 10 55 97 68 4]第一次排序 32  [10 55 97 68 4]第二次排序: 10 32[55 97 68 4]第三次排序: 10 32 55 [97 68 4]第四次排序: 10 32 55 97 [68...

2018-05-23 17:09:23 145

原创 常见排序算法--选择排序

原理:在给定一组数中,找到最小值,与第一个数互换位置,然后从第二个数开始寻找,重复该过程,直至只有一个数为止。例:数组{ 32,10,55,97,68,4}第一次排序后:4{ 10,55,97,68,32}第二次排序后:4,10{ 55,97,68,32}第三次排序后:4,10,32{ 97,68,55}第四次排序:4,10,32,55{ 68,97}第五次排序后:4,10,32,55,68{ 9...

2018-05-23 11:23:39 181

转载 构造函数、复制构造函数、赋值函数

C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法。下面就详细比较下三者之间的区别以及它们的具体实现1.构造函数构造函数是一种特殊的类成员函数,是当创建一个类的对象时,它被调用来对类的数据成员进行初始化和分配内存。(构造函数的命名必须和类名完全相同)首先说一下一个C++的空类,编译器会加入哪些默认的成员函数·默认构造函数和拷贝构造函数·析构函数·赋值函数(赋值运算符...

2018-05-21 16:05:50 344

翻译 操作符的优先级

*p++和(*p)++的区别:*p++等价于*p,然后p++(*p)++等价于(*p),然后对*p的值进行++ 

2018-05-21 12:03:53 1549

原创 break常见注意事项

1.break与continue;使用break时:输入为3,当循环变量等于输入时,跳出for循环。注意:break跳出的是当前的for循环!不再继续执行使用continue时:输入为3,当循环变量等于输入时,跳出本次for循环,然后继续进入循环。继续执行。2 switch 与 break:匹配到case后,如果没有break,则进行匹配的case以及后续的操作,包括default。如果遇到bre...

2018-05-21 11:35:02 2244

原创 关键字const

1.定义常量 const int a=3; 或 int const a =3;      注:这里的a是常量,值为3,不可以做修改。2.修饰指针 const char *p='a';      注:字符型常量指针指向a,a内容不能改变,但是指针可以指向其他的字符常量                 char *const p=‘a’;      注:此时是常量指针,p不能指向其他地址。3.cons...

2018-05-21 11:16:52 231

原创 static静态变量、函数的几点注意事项

1、静态变量只初始化一次,在被调用的过程中值保持不变。2(a)、静态变量作用域:本地全局变量,可以被本源文件(.cpp)的所有函数访问,但不能被其他源文件函数访问;2(b)、静态函数作用域:本源文件其他函数调用,不能被其他源文件函数调用。3、类内静态数据成员被类内所有成员共享(也可以被类外成员访问),但是遵从Public、protected、private访问规则。4、静态变量可以是private...

2018-05-21 10:29:44 2352

翻译 常见排序算法的时间复杂度、空间复杂度、稳定性

排序算法最佳时间复杂度平均时间复杂度最差时间复杂度空间复杂度稳定性冒泡排序O(n)O(n²)O(n²)O(1)稳定选择排序O(n²)O(n²)O(n²)O(1)不稳定插入排序O(n)O(n²)O(n²)O(1)稳定shell排序O(n)O(n^1.3)O(n²)O(1)不稳定快速排序O(nlog2n)O(nlog2n)O(n²)佳:O(log2n)差:O(n)不稳定堆排序O(nlog2n)O(nl...

2018-05-09 22:30:01 324

空空如也

空空如也

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

TA关注的人

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