自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)

原创 111

class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow();private slots: void on_toolButton_clicked(); void on_horizontal...

2018-05-08 12:23:21 127

原创 C++继承的各种模型

首先我们需要知道 如果继承中涉及虚函数 ,就会从在虚表,所谓的虚表就是存储虚函数地址的表格。子类继承的话,子类自己的函数会重写所有父类的满足条件的所有函数,其余的虚函数会保存在第一个父类的虚表中。 如果是虚拟继承的话,在菱形继承的条件下,防止的是数据的冗余,最顶层的父类的内容会保存在模型的最底端,他的一级子类会保存一个虚基表,该表存放的是子类对于他的偏移量。 在visual studio201

2017-11-30 09:00:35 265

原创 算法—直接插入排序

直接插入排序算法的思想: 我们要把一个数插入到已经有序的数据中,选取待排序的无序数据中的第一个数据,看做为一个已经有序的数列,然后依次将其余无序数据插入到这个有序的数列中。#include<iostream>using namespace std;struct Greater{ bool operator()(int x,int y) { return x>y;

2017-11-20 13:45:08 159

原创 数据结构—位图

在计算机中,每一个数据都是以二进制0/1来保存,每一个字节byte包括8个bit,每一个bit存储一个0/1的信息。 一 .为什么使用位图我们可以通过对每一个bit位的操作来标识一些信息,比如当当前bit为0时,表示不存在,当当前bit为1时,表示存在。 而位图正是利用每一个bit位能标识两种不同的信息。那么我们在构建位图之前,我们先来了解下,在计算机中的位运算。 运算符 含义 &

2017-11-14 11:41:55 244

原创 数据结构—开散列哈希算法

哈希表在插入和查找拥有好高的效率,当数据足够的多时,相比于平衡树,效率几乎是平衡树的两倍。 开散列哈希具有的优势就是,哈希表中存放着链表的地址,每个进来的数据通过哈希函数求得位置,存放在相应位置的链表中。查找数据时,只需要查找该数据通过哈希函数求得的位置下的链表中是否存在,就能高效的完成查找;插入时,只需要对该数据通过哈希函数求得位置的链表进行头插就可以。#include<iostream>#i

2017-11-12 20:50:38 421

原创 数据结构—Hashtable(闭散列)

哈希表是常见数据结构中一种拥有高效插入,高效查找的结构,时间复杂度为O(1)。闭散列哈希的不足之处就是随着冲突的数据增多,插入的效率也会随之变慢,为了优化闭散列哈希的效率,我们可以采取以下的方式:>1.当插入的数据占总大小的一定比率的时候,也称负载因子,我们可以对哈希表进行扩容,重新通过哈希函数求得位置插入。 >2.我们可以采用素数表的形式,来减少哈希冲突的可能。 >3.通过更好优化的哈希函数,

2017-11-08 19:57:05 374

原创 C++—string类写实拷贝的实现

>1.本次实现string为写实拷贝版本,参照new[]的形式,我们每次实现申请空间时,多在前面开辟4个字节来存放我们的引用计数,所谓的引用计数就是记录当前空间有多少对象在使用。也就是浅拷贝的形式。>2.为了完善string的实现,我们在不进行修改当前空间时,多个对象可以对公用的空间读取,我们采用浅拷贝的形式对这块空间管理,引用计数的值代表当前空间有多少对象在使用,没有一个对象交出主动权,引用计数减

2017-11-07 16:30:00 216 1

原创 C++—String类接口的实现

对c++string库部分接口的实现,通过接口间的复用,使个个接口紧密联系,更加简洁。 重要接口Expand()通过检测当前对象容量是否满足要求,对对象进行扩容等操作。 此次实现string全部使用的是深拷贝。#include<iostream>#include<string.h>#include<assert.h>#include<string>using namespace std;

2017-11-07 16:04:24 326

原创 C++设计模式——单例模式

导论:上次在面试的时候,面试官问及设计模式中的单例模式,什么是单例模式。在我把单例模式原理及两种实现方法道出,他问了一个问题,什么情况使用单例模式。在熟悉理论,并没有在实际开发过程中使用,这个问题问死了我。闲暇之余,重新的将这种简单且重要的软件设计模式总结。单例模式:单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个

2017-10-22 21:18:26 251

原创 常见的排序算法—冒泡排序

冒泡排序 冒泡排序算法的运作如下:(从后往前) >比较相邻的元素。如果第一个比第二个大,就交换他们两个。 >对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 >针对所有的元素重复以上的步骤,除了最后一个。 >持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。我们通过仿函数的形式来实现冒泡排序的排列顺序。#include<

2017-10-22 20:17:30 536

原创 C++智能指针

某种情况下,我们完成了对空间的申请,程序某些问题或者异常的出现,对空间申请完成后并没及时的释放,导致内存泄漏。为此,出现了智能指针的概念,用过类的销毁时调用析构函数的特性,将智能指针封装成一个类,在指针销毁时,同时完成对其空间的释放。Auto_ptr Auto_ptr的缺陷是一个指针给其他指针进行赋值或者拷贝时,会导致指针失效。#pragma once#include<iostream>temp

2017-10-16 19:13:41 211

原创 Thoughtworks——出租车

我看完题的大致思路是: ->首先读取文件,对读文件的没一行(一个车辆信息)进行解析,每一行的信息是一个车辆,所以我们要定义车辆信息的结构体,把所有的车辆信息保存在list中。->对于每一行的信息进行解读,简单实现字符串的解析。(这里也可以采用boost库中的split)->其次,我们读完文件信息,我们要对容器中的信息拿出,并进行一个个判断,然后放入合适的位置,方便输出结果。->判断车辆的顺序

2017-10-15 23:10:39 261

原创 俄罗斯方块

Centos6.5 C语言 实现基本的功能,旋转,移动,满行消除等功能。/************************************************************************* > File Name: 9.c > Author: Yangkun > Mail: yangkungetit@163.com > Cr

2017-10-02 13:32:43 215

原创 Linux下的MP3播放程序

运行环境Centos 6.5/*********************************************************************** > File Name: mp3.c > Author: YangKun > Mail: yangkungetit@163.com > Created Time: Sat 30 Sep 2017

2017-10-01 23:10:44 1742

原创 坚持自己喜欢的事情

从写第一篇博客的时候,我就走向了一天不归路。这么写,要么一篇也不写。 坚持的三个月以来,以前没得写,写一些自己学到的小的代码,写上去,到后面自己的知识总结,没总结一篇,然后知识就熟练的记忆了一遍,也从而能想到代码解决问题中出现的特例。 做一件事情贵在坚持,如果只是有新鲜感做几天就放弃,一点意思都没。坚持一件事情很难,但坚持下去了就会有收获,无论成败与否。当人的精神世界充实,坚持最终带来的经济收益

2017-09-24 20:16:47 771 1

原创 C++中的多态

在学习C++的时候,我们知道C++有三个重要的特性:封装,继承,多态。 那么,我们来看一下C++是怎么实现多态,以及多态实现的对象模型。所谓多态,其实就是“多种形态”。 C++中虚函数的主要作用就是实现多态。简单说父类的指针/引用调用重写的虚函数,当父类指针/引用指向父类对象时调用的是父类的虚函数,指向子类对象时调用的是子类的虚函数。 1.父类的指针或者引用调用重写的虚函数。class B

2017-09-24 20:06:05 182

原创 C++中重载、重写、重定义

重载: 1>作用域相同。 2>函数名相同,参数列表不同。 3>与返回值无关。 例:同一个类的构造函数和拷贝构造函数构成重载。class A{ A() {} A(const A& a) {}};重写(覆盖): 1>不在同一作用域(分别为基类和派生类)。 2>函数名相同,参数列表相同,返回值相同。 3>基类成员函数必须有virtual关键字修饰。 4>访

2017-09-21 19:12:05 141

原创 单链表

单链表:它是一种链式存储的线性表,用一组地址任意的存储单元存放线性表 的数据元素,称存储单元为一个节点。单链表中的一个节点分为两个部分,一个存储数据的数据域,一个指向下一个节点的指针域。 单链表又分为无头节点的单链表和带头节点的单链表。 下面代码实现的是带头单链表template<class T>struct ListNode{ ListNode(const T& data)

2017-09-16 19:23:21 172

原创 数据结构——二叉树的创建和遍历

在学习数据结构中,除了我们学习的线性结构,还有一种特殊而且重要的树形结构。最常见的二叉树,二叉树的种类又有很多。 二叉树概念 二叉树:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的二叉树组成。 满二叉树:在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子节点都在同一层上。(满二叉树拥有的节点个数为2^k-1 k为二叉树的高度)

2017-09-14 17:14:58 368

原创 C++—String类

在C++中常见的一个面试题就是实现一个String类,在面试中我们需要实现的是String类基本的管理资源,能够拥有以下的功能: 1.能够定义变量,不能够赋值和复制等。 2.能够作为函数的参数和返回类型。 3.可以作为STL中容器的数据类型。其次我们需要知道,string类的基本成员函数,如构造函数,拷贝构造函数,赋值操作符的重载,析构函数等。我们需要对这些函数实现String类的功能。在实现

2017-09-12 15:59:57 177

原创 Linux进程控制块(Processing Control Block)

进程 在广义上,所有的进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性 的集合。 进程控制块 每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的 进程控制块是task_struct结构体。现在我们全面了解⼀一下其中都有哪些信息。 在Linux中,这个结构叫做task_struct。 task_struct task_struct是Lin

2017-08-30 13:16:24 1691

原创 数据结构—堆

堆 堆数据结构是一种数组对象,它可以被视为一科完全二叉树结构。它的特点是父节点的值大于(小于)两个子节点的值(分别称为大顶堆和小顶堆)。它常用于管理算法执行过程中的信息,应用场景包括堆排序,优先队列等。最小堆:任一结点的关键码均小于等于它的左右孩子的关键码,位于堆顶结点的关键码最小。 最大堆:任一结点的关键码均大于等于它的左右孩子的关键码,位于堆顶结点的关键码最大。 #pragma once

2017-08-27 22:51:59 172

原创 C++类与对象——日期类

两个日期类比较大小通过对C++类与对象的学习和思考。实际生活问题运用所学,将日期分装成一个类,完成简单的计算。 C++编写一个日期类,可以完成一些基础的日期计算,一个日期是否合法,闰年天数,两个日期相差的天数,日期的比较,日期前后多少天的计算等。#pragma once #include<assert.h>class Date{public: Date(int year=1900,

2017-08-24 17:55:45 521

原创 Linux下的进度条程序

C语言输出/输入函数都自带缓冲区,刷新数据的基本单位以行为单位。 对比下两段代码 代码1#include<stdio.h>#include<unsitd.h>int main(){ printf("hello world!\n"); sleep(5); return 0;}先打印“hello world!”,然后sleep 5秒。 代码2#include<stdi

2017-08-22 20:47:51 178

原创 C++常见操作符的重载

1. 什么是操作符的重载操作符重载,计算机学科概念,就是把已经定义的、有一定功能的操作符进行重新定义,来完成更为细致具体的运算等功能。操作符重载可以将概括性的抽象操作符具体化,便于外部调用而无需知晓内部具体运算过程。 也就是说我们在以前操作符的基础上进行修改,重新定义,使一个操作符能够操作一个对象以及多个对象。 2. 常见操作符的重载为了演示,我们来定义一个复数类class Complex{

2017-08-16 11:27:54 158

原创 程序员的一生--类

程序员的一生^-^class Programmer{public: Programmer(int count) { while (count--) { Eating(); Coding(); Sleeping(); } } ~Programme

2017-08-16 02:11:34 219

原创 C\C++中的static的区别

通过对C语言以及C++的学习和总结,加上自己对书籍的查阅,总结出了常见的static在C语言/C++的用法。一. C语言中的static修饰变量1. static修饰局部变量 静态局部变量,放在静态储区,生命周期等于整个程序的生命周期。int main(){ static int a; printf("%d",a); return 0;}int main()

2017-08-16 01:44:54 364

原创 C++类和对象总结

一. 什么是类结构体(struct)是一系列数据的集合,这些数据可能描述了一个物体,也可能是对一个问题的抽象。 类(class)在C++中,结构体中不仅仅可以存放数据,而且可以放置函数。一个类的的大小是多少呢?怎么计算一个类? 类的大小的计算和结构体类似,需要按照内存对其原则,其成员函数不占大小。如下程序。#include<iostream>using namespace std;

2017-08-14 15:17:31 235

原创 指针和数组的比较

一.指针和数组的初步了解 什么是指针 在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址, 它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通 过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将 地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。什么是数组 数组就是一段连续可用的内存。 指针int main(

2017-07-31 21:28:19 227

原创 通过Python实现猜数字游戏

上次用过c语言来编写小游戏,这次通过对python的学习,对游戏进行编写。 首先python的思路跟c语言有点不同,因为python语言中没有switch case选择语句,我们可以通过while循环嵌套while循环的形式对游戏实现: 第一层循环是游戏开始选择的循环; 第二层循环是游戏主要内容的循环。import random

2017-07-31 19:57:17 4225 1

原创 函数的调用过程(栈帧)

1. 什么是栈帧C语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。 栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。2. 栈帧的相关名词每一次函数调用,都会为本次函数开辟空间,如何维护这个片栈空间。那么需要指针来维护这片空间。 EBP (extended base pointer)存放指向栈底的指针。 EBP (exten

2017-07-28 21:13:56 312

原创 扫雷游戏的编写

我们都玩过一款名为扫雷的游戏,而利用我们所学的C语言也可以模拟实现扫雷的功能。通过对扫雷的了解,明白其原理。首先在一块区域上,选取一个坐标点,如果该坐标点是雷点,游戏结束;如果是安全区,而且周围都为安全区,则会进行扩展,雷区的附近会有坐标显示雷存在的颗数。 根据C语言所学,大致思路是:系统布雷,玩家选取坐标,是安全区,游戏继续,扩展或者显示周围雷数;如果雷区,则游戏结束。用随机数的生成,在一个10

2017-07-24 23:48:09 264

原创 C语言实现三子棋

本次程序是三子棋的简单实现,首先我们要了解三子棋的游戏规则,3X3的游戏格子里先,先连成一条线的获胜。根据游戏规则,我们将其规则转换为编程,大致思路是棋盘的打印,电脑放置棋子,玩家放置棋子,对每次放置棋子进行胜负判断。棋盘为3X3,用到了我们C语言中的二维数组,还有其他的循环和判断语句,数组的合理布置和运用帮助我们很好的在一个棋盘上放置了棋子。编写此次程序我们需要添加一个头文件来包含我们的头文件,

2017-07-22 00:23:08 454 3

原创 模拟三次密码输入的场景

通过C语言简单的模拟用户登录界面,用户最多输入3次,错误退出程序,输入正确会有提示。 大概思路是设置正确密码:用户输入密码与正确密码进行比较,3次设置为循环循环,对每次输入密码进行判断,当正确为真值,跳出循环,显示”密码正确”;当三次均错误,跳出循环,进行判断,输入次数超过三次,显示”退出程序”。简单的运用循环和判断完成实现。我本次程序采用的是for循环。#include<stdio.h>#i

2017-07-18 12:41:23 784

原创 通过C语言实现猜数字游戏

很多人都玩过猜数字游戏(给定一个范围的数字,通过几次猜测确定正确值),通过对C语言的学习,对猜数字游戏实现简单的编写。思路大概是,首先系统产生一个随机数,设定该随机数的范围,用户猜测值与随机数进行比较判断。本次程序的编写猜测的范围为1-99。需要用到if语句的判断,while循环,do while循环。#include<stdio.h>#include<time.h>#include<stdli

2017-07-09 21:48:18 10994 1

原创 学习生涯的开始

第一次认真的把c语言当成一门技能要开启以后职业、梦想的钥匙来学习。第一次接触C语言的时候,那时候是大二,只是简单地把它当成一门修学分的课程来学习。现在重拾C语言,久别益友的感觉,以后人生的路上,一门必修的语言,人与机器交流的途径,也是我实现人生理想的必经之路。       重拾起来,很熟悉,但是回忆其具体的内容,却几乎没什么印象。一遍遍重新敲着简单的语句,一点点积累。路很长,志很远,肩负着以后

2017-06-26 00:04:43 259 1

空空如也

空空如也

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