自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 3D数基础:图形与游戏开发一书重要知识点概要

最近在看《3D数基础:图形与游戏开发》,这篇博文只是大致记录一下书中的重点知识点,后面会对每一个重点都写一篇专门的博文来详细介绍。本文还在持续更新中......第二章:左右手坐标系,unity使用左手坐标系,3D MAX使用右手坐标系第三章:坐标系惯性坐标系在物体坐标系与世界坐标系中,引入了一个惯性坐标系,惯性坐标系的原点与物体坐标系的原点重合,惯性坐标系的轴平行于世界坐标系的...

2019-09-23 16:15:56 282

原创 C++虚表详解

使用工具:本文输出内存模型的工具为vs2017开发人员命令提示符,使用方法如图所示:我们使用cl(不是C1,不是C一,是cl,LLLLL)命令cl的语法为:cl [filename].cpp /d1reportSingleClassLayout[className]意思是查看[filename].cpp文件中名称以[className]开头的所有类的内存模型如果文件不在同一...

2019-09-03 17:24:04 14928 1

原创 C++虚继承下带有虚函数的类的大小(含多重虚继承,虚继承后完全覆盖等复杂情况)

带有虚函数的虚继承的对象模型比较复杂,所以来整理一下。以下讨论均在visual studio2017以及64位环境的前提下进行;1.带有虚函数的类class A{public: int a_; virtual void foo1() { cout << "A1" << endl; } virtual void foo2() { cout <<...

2019-08-20 23:56:27 925 2

原创 谈谈C++的四种“cast”类型转换

相比于传统的类型转换,C++中的4种cast作用更加明确,使代码更具有可读性,下面就来依次介绍一下:1.static_cast任何具有明确定义的类型转换,只要不包含底层const,都可以使用static_cast,这几乎就是传统类型转换的替代(为什么是几乎,下文会提到),比如:double a=10;int b = static_cast<int>(a);相比于传统...

2019-07-11 23:31:48 1375 1

原创 剑指offer——重建二叉树

题目的意思是给出一颗二叉树的前序遍历和中序遍历,让你构建出这颗二叉树只要观察出针对每一颗子树的处理都是相同的,就可以知道这是典型的考察分治的题目,这题也就迎刃而解了。/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *r...

2019-07-10 22:31:35 81

原创 设计模式(十一)————状态模式(State Pattern)

定义:允许一个对象在其内部状态发生改变时改变他的行为。对象看起来似乎修改了它的类。(类的行为是基于它的状态改变的,使用状态模式可以有效解决代码中if-else和switch的case太多的问题,使代码更容易维护)UML类图:C++实现:#include<iostream>#include<string>using namespace std;cla...

2019-06-26 13:14:56 95

原创 设计模式(十)————装饰者模式(Decorator Pattern)

定义:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰者模式相比生成子类更加灵活。UML类图:C++实现:#include<iostream>#include<string>using namespace std;class Beverage{public: string description = "Unkonw Beverage"...

2019-06-25 22:17:07 105

原创 设计模式(九)————外观模式(Facade Pattern)

定义:定义一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。UML类图:C++实现:#include<iostream>using namespace std;class Shape{ virtual void Draw() = 0;public: virtual ~Shape() = default;};cla...

2019-06-25 22:13:31 95

原创 设计模式(八)————适配器模式(Adapter Pattern)

定义:将一个类的一组接口变换成客户端所期待的另一种接口,从而使因接口不匹配而无法在一起工作的两个类能够在一起工作。类适配器通过集成被适配类和目标类,对象适配器通过组合来适配被适配者。UML类图:C++实现:#include<iostream>using namespace std;class Duck{public: virtual void Quac...

2019-06-25 22:08:04 82

原创 设计模式(七)————模板方法模式(Template Pattern)

定义:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。(工厂方法是模板方法的一个特殊版本)UML类图:C++实现:#include<iostream>#include<string>#include<mutex>#include<stack>u...

2019-06-25 22:03:54 109

原创 设计模式(六)————命令模式(Command Pattern)

定义:将请求封装成一个对象,从而让你是用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。UML类图:C++实现:#include<iostream>#include<string>#include<mutex>#include<stack>using namespace std;cla...

2019-06-25 22:01:27 83

原创 设计模式(五)————观察者模式(Observer Pattern)

定义:在对象之间定义一对多的关系,这样一来,当一个对象改变状态,所有依赖他的对象都会收到通知,并自动更新。(在此模式中,一个目标物件管理所有相依于它的观察者物件。并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的的方法来实现。观察者模式有时又被成为模型-视图(Model-View)模式,源-收听者(Listenr)模式或者从属模式)UML类图:C++实现:...

2019-06-25 21:58:18 104

原创 设计模式(四)————工厂方法模式(Factory Pattern)与抽象工厂方法模式(Abstract Factory Pattern)

工厂方法模式定义:定义一个创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。UML类图:C++实现:#include<iostream>using namespace std;class Shape{public: virtual void Draw() = 0; virtual ~Shape() = default;...

2019-06-25 21:53:38 124

原创 设计模式(三)————迭代器模式(Iterator Pattern)

定义:提供一种方法顺序访问一个聚合对象中的所有元素而不暴露该对象的内部表示。UML类图:C++实现:#include<iostream>#include<string>#include<mutex>#include<stack>#include<vector>using namespace std;cl...

2019-06-25 21:47:32 94

原创 设计模式(二)————单例模式(Singleton Pattern)

定义:确保某个类只有一个实例,并且自行实例化且向所有类提供这个实例。单例模式有六种常用的创建方式:1.懒汉式(线程不安全)在单线程下,用懒汉式已经足够好了,但是一旦遇到多线程,就有可能出现多个实例。2.懒汉式(线程安全)在并发较低的情况下,该方案也可以使用,但是一旦并发较高,线程锁带来的时间消耗将变得不可接受,于是我们有了双重检查锁写法。3.饿汉式在一开始就获得一个实例...

2019-06-25 21:44:10 128

原创 设计模式(一)————策略模式(Strategy Pattern)

定义:封装一组算法,让算法之间可以相互替换类图:C++实现:#include<iostream>using namespace std;class IStrategy{public: virtual void AlgorithmInterface() = 0; virtual ~IStrategy() = default;};class Str...

2019-06-25 21:32:41 117

原创 C++指针总结(不包括智能指针)

一、指针的类型1.int* p;类似于这种形式的指针,可指向一个对应类型的变量,比如int *p;int a;p=&a;可以让指针p指向整型变量a,int型的指针变量p里面放的是int型变量a的地址。2.int* p[3];表示p是一个数组,数组里面有3个元素,每一个元素都是一个可指向int型的指针变量#include<iostream>u...

2019-03-26 15:29:35 194

原创 为什么全球只有13DNS根服务器?

        在谈论这个问题之前,我想先说一点,13台根服务器并不是物理上的13台,而是逻辑上的13台,这也就是说,每一台逻辑上的根服务器由多台物理上的根服务器构成;         那为何我们在逻辑上只有13台呢?         关于这个问题,我在网上查找了许久,终于找到一篇很好的文章:         https://miek.nl/2013/november/10/why-1...

2018-12-11 19:11:03 3144 2

原创 《汇编语言(第三版)》王爽,实验九

不知道为什么,在win7下用的emu8086,显示会错位,到不了中间位置在网上找了下别人的代码,发现即使是在别人那里能正常显示在中间位置,复制到我这里都会显示为上图所示的样子。下面是代码,定义数据段的时候为了后面不用将ASCII码和属性分开读取,就定义成如下这样比较繁琐的形式了。(其实做的时候第一时间没想到将ASCII码和属性分开写,比如db 'welcome to masm!'    db 02...

2018-05-20 14:19:42 238

原创 《汇编语言(第三版)》王爽,实验八

分析下面的程序,在运行前思考:这个程序可以正确返回吗?运行后再思考:为什么是这种结果?通过这个程序加深对相关内容的理解。assume cs:code code segment mov ax,4c00h int 21hstart: mov ax,0s: nop nop mov di,offset s mov...

2018-05-19 19:24:44 646

原创 汇编语言(第三版)王爽,实验七

assume cs:codedatasg segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db '1993','1994','1995'...

2018-05-19 14:12:19 2748

原创 线性时间求最大子数组

#include&lt;iostream&gt;#include&lt;cstdio&gt;using namespace std;int main(){ int a[100]={13,-3,-25,20,-3,-16,-26,18,20,-7,12,-5,-22,15,-4,7}; int tsum=0,sum=0,max=-2147483648; int f; for(int ...

2018-05-15 18:29:55 323

原创 欧拉筛法

很久没发博客了,把这段时间的笔记发一部分上来当做备份了= =想看欧拉筛法的可直接拉到最后相信各位对素数并不陌生,素数就是指不能被除了1和自身以外的别的数整除的数,比如2,3,5,而且根据欧几里得的证明来看,素数是无限的,普通的筛选素数的方法可能对较小的数据能在较短时间内完成筛选,但对于很大的数据(比如1e9)就会花费很长的时间。例如,普通的求素数方法时这样的:int ...

2018-05-15 18:24:08 16803 4

原创 C++实现SPFA和dijikstr算法

看了B站上卿学姐的视频,学着写了写先是SPFA:#include<iostream>#include<vector>#include<queue>using namespace std;const int maxz = 205;vector<pair<int, int>>E[maxz];int inq[maxz...

2017-11-04 21:22:07 1247 3

原创 C++实现二叉堆

#includeusing namespace std;#define MAXZ 100#define RES 10class heap { int *T; int cap; int len;public: heap(); heap(int); ~heap(); void up(int); void down(int,int); void interts(int);

2017-11-04 21:19:01 430 1

原创 基于链表的双端队列的类模板的C++实现

/*用链表实现双端队列(储存整型)该队列有以下几个功能1.Createdeque输入n个元素来初始化队列2.cleardeque清空整个队列3.f_inde(T e)在队首插入元素e4.f_outde()队首元素出队5.l_inde(T e)在队尾插入元素e6.l_outde队尾元素出队7.empty检测队列是否为空8.length输出并返回队列长度9.

2017-10-16 22:16:40 848

原创 基于链式表的栈的类模板的C++实现

/*  基于链表实现的栈的类模板  该栈有以下功能:1.linklist建立空栈2.~linklist销毁栈3.Createstack输入n个元素来创建栈4.top输出并返回栈顶元素5.push在栈顶压入一个指定元素6.pop栈顶出栈7.stacklen输出并返回栈中元素的个数8.empty检测栈是否为空9.clear清空栈   该栈有私有成员:

2017-10-16 22:13:30 317

原创 c++实现链式表的类模板

在写链表反转的时候很苦恼,感谢这位博主的图http://blog.csdn.net/u013271921/article/details/46382345然后自己画了几遍,终于是理解了/*类模板双向链表,通过一个节点类node和一个链表类chlist来实现,node中包含前驱指针pr,后继指针nx,和数据域data,并且data可接受任意类型的数据链表类chlist包含逆序创建链表

2017-10-16 21:54:13 919

原创 动态顺序表C++实现

写成员函数的时候参考了下严蔚敏的数据结构(C语言版)#include#includeusing namespace std;#define MAXSIZE 1000#define Realloc 10template class Sqlist {public:void CreatSqlist(T a[], int n, int c);//用长度为n,容量为c,类

2017-09-28 20:30:23 817

原创 hdu1009(贪心)

题本身并不难,但是要多考虑下,如,当小鼠没有猫粮,或者有些豆子白送,或者没有交换豆子的房间,或者小鼠没猫粮但是刚好只有一间屋子,且是白送猫粮的情况,总之多多考虑

2017-05-23 22:02:42 157

空空如也

空空如也

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

TA关注的人

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