自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

黑暗君主的博客

不要一生碌碌无为,还说平凡难能可贵。

  • 博客(21)
  • 收藏
  • 关注

转载 一个小项目——利用Windows API实现代码雨(带注释)

#include <windows.h>#include <cstdlib>#define ID_TIMER 1 #define STRMAXLEN 25 //一个显示列的最大长度 #define STRMINLEN 8 //一个显示列的最小长度/*笔记:LRESULT为一个数据类型,作用是从窗口程序或者回调函数返回的32位值CALLBACK为...

2019-11-18 14:19:40 633 1

原创 一个基本的String类

string可以理解为元素类型为char的vector容器。string的性质也与vector相似,只是string提供了丰富的字符串处理函数,方便对字符串进行操作。class String{public: String(); //默认构造函数(无参构造) String(const char *pStr); //有参构造函数 String(const String &str...

2019-11-17 12:42:39 183

原创 哈夫曼树和哈夫曼编码

哈夫曼树的应用很广,特别是在多媒体技术、编解码技术、通信技术等领域有着特殊的用途。首先回顾一下哈夫曼树及哈夫曼编码的概念。二叉树带权路径长度及哈夫曼树设二叉树有m个叶子结点,每个叶子结点分别赋予一个权值,那么该二叉树的带权路径长度定义为WPL=∑i=1mwiliWPL=\sum_{i=1}^mw_il_iWPL=i=1∑m​wi​li​其中wiw_iwi​为第i个叶子结点被赋予的权值,...

2019-11-17 10:08:39 821

原创 面试题:两个栈实现一个队列的C++实现

一、实现思路首先,让我们来回顾一下栈和队列的相关知识。栈是一种后进先出的线性数据结构,它只允许从栈顶插入和删除数据;队列是一种先进先出的线性数据结构,一般意义上的队列允许从一端插入数据,从另一端删除数据,插入数据的一端称为队尾(rear),取出数据的一端称为队头(front)。然后,我们很自然的可以想到用两个栈来实现,思路如下:(1)定义两个空栈s1和s2,假设有5个数1、2、3、4和5,如...

2019-11-14 16:51:32 211

原创 浅谈指针和句柄

句柄是Windows编程中一个重要的概念。句柄是一个32位的无符号整数,表示一个对象的内存地址列表的整数索引,是分配给资源的的唯一标识,这里面的对象指的是诸如应用程序实例、窗口、位图、GDI之类的资源对象。句柄并没有直接指向资源对象,而是保存着一个资源对象在资源注册列表中的索引,也就是说,句柄是间接指向资源对象的。资源对象加载到内存时需要将首地址在资源列表中进行注册,注册后无论该资源对象的地址是...

2019-11-11 21:12:18 956

原创 智能指针

由于C++不支持垃圾自动回收机制,程序员必须手动释放动态申请的空间,否则会发生内存泄漏,这无疑对编程提出了更高的要求。为了解决令人头疼的内存泄漏问题,STL引入了智能指针。智能指针实际上是一个类模板,对普通指针进行了一层封装,模板参数是指针指向的类型,通过重载->和*两个操作符使智能指针的用法与普通指针相同。通过析构函数释放指针指向的空间,使得内存管理完全由智能指针自动完成,无需手动释放。...

2019-11-06 16:18:16 112

转载 网络编程——即时通信系统

1、socket套接字创建流程图2、相关函数介绍socket函数#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int socket(int domain, int type, int protocol);domain:AF_INET 这是大多数用来产生 socket 的协议,使用 T...

2019-11-03 19:30:03 638

原创 机房预约管理系统

一、项目需求分析二、项目实现首先,创建一个身份抽象类,Identity.h,并由它作为父类,派生出学生类(student.h),老师类(teacher.h)和管理员类(manager.h)#pragma once#include <iostream>#include <vector>using namespace std;//身份抽象基类class Id...

2019-11-02 21:48:32 4465 4

原创 软件知识杂谈(三)

1、地址总线宽度决定了CPU可以访问的物理地址空间,简单地来说就是CPU到底能使用多大的内存。CPU字长指CPU位时间内(同一时间)能一次处理的二进制数的位数。数据总线负责计算机中数据在各组成部分之间的传送,数据总线宽度是指在芯片内部数据传送的宽度,而数据总线宽度则决定了CPU与二级缓存、内存以及输入/输出设备之间一次数据传输的信息量。2、时钟周期也称为震荡周期,定义为时钟脉冲的倒数,是计算机...

2019-11-02 18:01:34 157

原创 vector容器空间增长原理剖析

为了支持随机访问,vector容器中的元素是连续存储的。再向vector中插入元素时,如果vector当前的空间已经满了,没有额外的空间存储新元素时,vector会申请一块更大的空间,将所有元素拷贝到新空间中,并将待插入的元素插入到新空间里。那么vector在当前空间已满的情况下重新申请空间时,究竟会申请多大的空间?当然vector不会每次重新申请的空间只比原有空间多出一个元素的大小,因为如果采...

2019-11-01 21:09:53 272 1

原创 容器适配器

每种容器都提供了一组接口,如果容器中的接口不能满足需求 ,那么应该重新编写容器还是改变我们的需求?根据转接线的例子可知,既不需要重新编写容器也不需要修改需求,而是应该构造一个容器接口到需求接口之间的转换器,称为容器适配器。**容器适配器将原容器进行了一层封装,底层基于普通容器,上层对外提供封装后的新接口,满足不同使用者的需求。**容器适配器对使用者是个黑盒。除了使用STL提供的容器适配器,也可以...

2019-10-31 17:50:26 101

原创 图的遍历

/*程序说明:本程序模拟演示了图的邻接表存储,以及图的深度和广度优先遍历这里我选择用链表来存储边,用队列来存储顶点,其实可以调用C++的相关容器,例如:list,deque,vector等。我之所以自己写一遍是为了复习之前所学。*/#include <iostream>#include <cstdlib>using namespace std;#defi...

2019-10-29 21:42:32 128

原创 软件知识杂谈(二)

1、程序计数器(PC)是用来存放下一条指令所在单元的地址的地方。2、指令寄存器(IR)是临时放置从内存里面取得的程序指令的寄存器,用于存放当前从主存储器读出的正在执行的一条指令。3、地址寄存器(AR)用来保存当前CPU所访问的内存单元的地址。4、指令译码器(ID)从内存中取出的一条指令经数据总线送往指令寄存器中。5、奇校验:如果以二进制数据中1的个数是奇数为依据,则是奇校验。可以检错但无...

2019-10-29 15:45:07 178

原创 C++中的深浅拷贝

先用以下代码来引出问题:#include <iostream>using namespcase std;//深拷贝与浅拷贝class Person{public: Person() { cout<<"Person的默认构造函数调用"<<endl; } Person(int age,int height) { m_Age=age;...

2019-10-27 20:42:12 86

原创 软件知识杂谈(一)

1、对有n个节点、e条边且采用数组表示法(即邻接矩阵存储)的无向图进行深度优先遍历,时间复杂度为O(n^2)。深度优先遍历的思想:从图中某个顶点v出发,访问该顶点v,然后依次从v的未被访问过的邻接点出发,继续深度优先遍历该图,直到图中与顶点v路径相通的所有顶点都被访问为止。对于非连通图,首次不能遍历所有顶点,若仍有顶点未被访问,就另选一个未被访问的顶点作为起点,继续深度优先遍历。邻接矩阵使用一...

2019-10-24 17:45:00 490

原创 软件开发方法(有时间会更新,完善)

软件开发模型1、瀑布模型瀑布模型严格遵循软件生命周期各阶段的固定顺序:计划、分析、设计、编程、测试和维护,上一阶段完成后才能进入到下一阶段,整个模型就像一个飞流直下的瀑布。它的优点在于:可强迫开发人员采用规范的方法;严格规定了各阶段必须提交的文档;要求每个阶段结束后,都要进行严格的评审。但瀑布模型过于理想化,而且缺乏灵活性,无法在开发过程中逐渐明确用户难以确切表达或一时难以想到的需求,直到软件...

2019-10-22 00:35:11 633

原创 演讲比赛(C++实现)

一、项目需求分析1、某机构举办演讲比赛,在第一轮比赛中有12名选手参赛,并随机分组,6人为一组。2、第一轮比赛后,由10位评委进行打分,打分规则为去掉最高分和最低分后计算平均分,筛选出小组前三名进入下一轮。3、第二轮比赛后,用同样的方法打分,选出前三名,比赛结束。4、下一次举行可以查看往届的比赛记录。二、代码实现首先来创建选手类 speaker.h#pragma once#inc...

2019-10-18 19:25:15 642 2

原创 计算机网络常见知识点小结(二)

一、TCP协议的三次握手1、第一次握手:主机A向主机B发送一个SYN包并进入SYN_SEND状态,表示主机A申请发出一次连接,并等待B的确认。2、第二次握手:主机B接收到SYN包后要回应主机A一个确认信息——ACK包,表示同意建立此连接,同时主机B还要向主机A发送一个SYN包,表示主机B也有建立连接的请求。此时主机B进入SYN_RECV状态。3、第三次握手:主机A接收到主机B发送过来的SYN...

2019-10-17 21:22:13 206

原创 计算机网络常见知识点小结(一)

一、OSI七层参考模型OSI是Open System Interconnection(开放系统互联)的缩写,它是国际标准化组织(ISO)制订的不同计算机互联的国际标准,是设计和描述计算机网络通信的基本框架。OSI参考模型共分为七层,如下表所示层数名称基本功能对应设备第一层物理层链路上比特流传输中继器,集线器第二层数据链路层负责网络内部帧的传输网桥,交换...

2019-10-17 10:10:40 245

原创 C++中的类型转换

//static_cast转换案例/*它可以完全代替C风格的类型转换实现基本类型转换,此外在对象指针之间的类型转换时,可以将父类指针转换成子类指针,如果两个类不相关,则无法相互转换*/class Base {};class Derived:public Base {};Base *b1 = new Base; //父类指针指向父类对象Base *b2 = new De...

2019-10-15 23:58:41 106

原创 适合初学者学习的一个小项目:OpenCV实现肤色检测

OpenCv实现肤色检测一、项目简介首先,我们从计算机的磁盘中(也可以将资源导入到当前文件)读取一幅有人像的彩色图片,在屏幕上显示,然后,我们通过函数来实现对人像肤色的提取,具体实现过程参考下面代码实现,最后,我们可以直接显示处理后的图片,可以看到肤色以外的区域都被黑色填充,也可以查看处理过程的图片,肤色区域都被标记为白色,其余区域都被黑色填充。二、代码实现//运行环境 VS2017 Wi...

2019-10-14 16:26:28 494

空空如也

空空如也

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

TA关注的人

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