
c/C++
文章平均质量分 76
fk543
fk5431.com
展开
-
优先队列 priority_queue
普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (largest-in,first-out)的行为特征。优先队列是0个或多个元素的集合,每个元素都有一个优先权或值,对优先队列执行的操作有1) 查找;2) 插入一个新元素; (复杂度是O(log2n))原创 2015-04-11 16:26:04 · 928 阅读 · 0 评论 -
随机迷宫
最近写unity的一个游戏,有一关要实现随机迷宫地图,就查了查随机迷宫实现的算法随机迷宫设置一个地图,假设地图中都是墙,咱们要种墙中挖出一个通道,这样就可以实现一个随机迷宫。在每个位置把空间用十字分成四个部分,若是不连通其他通道就接着挖。#include#include#include#include#define MAZE_MAX 50char map[MAZE_M原创 2015-07-30 16:26:32 · 1480 阅读 · 0 评论 -
堆,栈,静态存储区的理解
对于堆栈全局变量区使用的一些注意点!原创 2015-08-14 17:10:54 · 979 阅读 · 0 评论 -
数据类型的理解
#include#include#includeusing namespace std;int main(){ int a; //编译器分配 4个字节的空间 int b[10]; ////编译器分配 40个字节的空间 int *p; a = 10; printf("%d\n\n", &a); //275223 *((int*)原创 2015-08-14 16:11:16 · 1390 阅读 · 0 评论 -
双指针
双指针也就是二级指针,二级指针是相对一级指针而言的。二级指针一般用于函数参数传递;对于值传递的理解有助于我们理解二级指针。对于普通的变量而言,参数的至传递就意味着只是简单的将变量COPY了一份传递给函数,普通变量是无法改变外部原始变量的值。#includeusing namespace std;void increat(int a){ a = a + 1;}int m原创 2015-08-07 20:18:39 · 959 阅读 · 0 评论 -
static之面向过程中的理解
static的作用1、隐藏2、static的第二个作用是保持变量内容的持久3、默认初始化原创 2015-04-18 16:08:26 · 1037 阅读 · 0 评论 -
c语言之猜数字的小游戏
突然想起在刚学C语言的时候变想做出一个可以玩耍的游戏,但是当时都没有了解图形库的概念,在网上闲逛便发现了有人做了一个猜数字的游戏,我当时也跟的写了一个,基本都差不多。想想也是好久以前的东西了,直接贴代码把,大家多多指导。#include#include#includeint NUM[4], PAER_NUM[4];void begin(void);void start(void);原创 2015-04-12 14:58:18 · 1697 阅读 · 0 评论 -
【C/C++和指针】著名的《const的思考》
1、什么是const?常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。3、cons有什么主要的作用?(1)可以定义const常量,具有不可变性。例如:const int Max=转载 2015-04-12 00:23:23 · 1033 阅读 · 0 评论 -
DrawText
DrawText 在指定的区域中输出格式化的文本 是一个高级输出的函数函数原型:int DrawText( HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UNIT uFormat); hDC是设备上下文句柄。lpString指向将要绘制的UNICOD原创 2015-04-09 23:58:19 · 1157 阅读 · 0 评论 -
拼图游戏
从学习windows 开始 懂得一点点东西就按耐不住自己的好奇心想做出第一个属于自己的游戏。再网上也看了看别人的成果,因为自己也是刚开始学习,所以决定模仿一个拼图游戏。一下是自己 参考 后 写出的代码用了人家的一个随机洗牌的算法,但是发现一个问题,有时候会发生拼图无法拼出的情况,这个问题暂时还没有进行改进/* file: 拼图游戏 author: 1050577129原创 2015-04-08 15:28:38 · 1191 阅读 · 0 评论 -
windows的消息机制
Windows操作系统最大的特点就是其图形化的操作界面,其图形化界面是建立在其消息处理机制这个基础之上的。如果不理解Windows消息处理机制,肯定无法深入的理解Windows编程。可惜很多程序员对Windows消息只是略有所闻,对其使用知之甚少,更不了解其内部实现原理,本文试着一步一步向大家披露我理解的Windows消息机制。可以说,掌握了这一部分知识,就是掌握了Windows编程中的神兵利器,转载 2015-04-08 15:27:33 · 616 阅读 · 0 评论 -
C++ 中的封装、继承
一、封装 封装就是将抽象得到的数据和行为相结合,幸好曾一个有机的整体,将数据的源代码进行有机的结合,形成类。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,只需要通过外部接口,特定的访问权限来使用类的成员。封装可以隐藏实现细节,使代码模块化。#includeusing namespace std;class Student{public: vo原创 2015-08-07 21:15:25 · 1034 阅读 · 0 评论 -
mulitset,mulitmap
multiset 的意思是多重集合,和集合set的操作基本一致,只不过multiset支持插入重复的对象。在集合中允许重复的元素出现。头文件依旧还是#includemultimap的意思是多重映照容器,和map的操作基本一致,类似的multimap支持插入相同的键值。头文件和map的头文件一样。下面是学校OJ的一个关于multimap的简单使用的题,只有插入和删除:#include#原创 2015-06-01 20:55:27 · 1293 阅读 · 0 评论 -
C++中的排序
在C++ stl中带有 排序的函数,头文件是#includesort 函数有默认的三个参数(1) 第一个参数是要排序的数组的起始地址。(2) 第二个参数是要排序的结束的地址。(3) 第三个参数是排序的方法,可以从小到大也可以从大到小,如果没写,默认是升序排列。#include#includeusing namespace std;int main(){ int原创 2015-04-11 15:50:54 · 1166 阅读 · 0 评论 -
static之面向对象
一、静态数据成员在类的数据成员声明前加上关键词是static,那么该数据成员就成为了类内的静态数据成员,我们看一个例子:#includeusing namespace std;class Point{private: int x, y; static int num; //声明静态数据成员public: Point() {原创 2015-04-19 14:41:11 · 1038 阅读 · 0 评论 -
内联函数的理解
一、内联函数的定义(来自百科)内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内敛函数,需要看编译器对该函数定义的具体处理。对于能否形成内联函数,在C++ primer 中有说过 :内敛说明只是向编译器发原创 2015-04-13 11:46:28 · 1193 阅读 · 1 评论 -
函数重载的理解
一、介绍我们引进重载函数之后不但可以省去我们为实现同一个功能的函数去很多个名字的麻烦,而且可以方便我们实例化不同的对象,在C++中还可以通过重新定义运算符(也就是我之前写过的运算符的重载),使它能够用于特定类的对象执行特定的功能,这增强了C++语言的扩充能力。二、什么是重载函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。重载函数通常原创 2015-04-14 00:40:18 · 1428 阅读 · 0 评论 -
C++this 指针用法详解
1. this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。 例如转载 2015-04-14 23:11:37 · 1131 阅读 · 0 评论 -
运算符重载
运算符重载的目的就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。在C++ 预定义的运算符中,它们只适用于基本数据类型。但是对于我们经常会自己定义一些数据类型(类),我们也同样希望它们可以进行类似的操作,这时候我们就需要对运算符进行重载。运算符重载的实质其实是函数重载,它是C++最吸引人的特性之一。1.运算符重载的定义:运算符重载是通过创建运算符函数实现的,运算符原创 2015-04-12 00:36:59 · 1295 阅读 · 0 评论 -
C++中vector的使用
vector是STL中的最常见的容器,它是一种顺序容器,支持随机访问。简单的说vector就是一个能存放任意类型的动态数组,只不过数组是静态的分配空间,一旦分配了空间大小就不能在改变了,但是vector是动态分配内存,它随着元素的不断插入,会按照自身的一套机制不断扩充自己的容量。vector的扩充机制:按照容器现在容量的一倍进行增长。vector容器分配的是一块连续的内存空间,每次容器的增长,原创 2015-05-05 19:28:34 · 1255 阅读 · 0 评论 -
C++ set的一些用法
set也是STL中比较常见的容器。set集合容器实现了红黑树的平衡二叉检索树的数据结构,它会自动调整二叉树的排列,把元素放到适当的位置。set容器所包含的元素的值是唯一的,集合中的元素按一定的顺序排列。我们构造set集合的目的是为了快速的检索,不可直接去修改键值。set的一些常见操作:begin() 返回指向第一个元素的迭代器clear() 清除所有元素count() 返回某个原创 2015-05-05 20:19:37 · 12549 阅读 · 0 评论 -
运算符重载之自增自减篇
今天写题要求写到重载自增自减运算符,之前看运算符的重载没有仔细思考,对于运算符++和--来说有两种形式,一种是前置的形式,一种是后置的形式。 如果不区分前置或者后置的区别的话,则我们就像其他运算符那样直接operator++()或者operator--()去重载就可以,但是如果我们要区分前置和后置,那么这种重载方式不能代替两种形式,所以在这里说明一下,我们用operator++()原创 2015-05-13 20:52:22 · 3459 阅读 · 0 评论 -
windows API SDK
1.本文编写目的 本文是为了帮助一些人弄清一些关于Windows API, C运行时程序库(CRT), 和标准C++库(STL)的基本概念。有很多人甚至是有经验的程序员在这些概念上是含糊不清的甚至是有错误观点。如果你想知道他们是在什么基础上实现的并 且一直没时间弄清楚这些概念,请花费点时间阅读下本文。2. 基本概念 下面这幅图代表了WinAPI、CRT和STL三者之间的关系。转载 2015-04-08 15:22:44 · 823 阅读 · 0 评论