自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 函数式编程与 C++

这个学期学了一门函数式语言 Coq,是法国人发明的,它与 ML 很像,其实 Coq 的发明主要是受了 ML 的影响。Coq 的语法我就不在这叙述了,有兴趣的朋友可以看这本书 Software Foundations,也就是我们上课用的教材。下面直接看些例子吧。1. map它的功能与 C++ 中的s...

2015-04-22 12:34:32 3131 1

原创 C/C++ 中生成特定范围内的随机数

大家在写 C/C++ 程序时,难免会遇到要求获取某个范围内的随机数,我查阅了一些资料后,总结如下。本文分两部分,先介绍 C 语言中与随机数相关的两个函数 srand 和 rand,后介绍 C++ 中的 random 库,每一部分最后会给出生成特定范围内的随机数模板供参考。 1 C 语言中...

2014-11-27 16:04:02 23312 1

原创 C++ 中的 Lambda 表达式

前些天买了本《程序设计语言理论》,看了简介,Lambda 演算贯穿整个理论,尤其在函数式语言中具有重要作用。C++11 中也加入了 Lambda 表达式,下面做个总结。1、一个简单的 Lambda 表达式如下: [] {} 这就定义了一个对象,这个对象匿名,记住,Lambda 表达式是对象,不是类...

2014-05-08 16:52:36 2248 0

原创 【算法】第 n 小数 nth_element

STL 中取第 n 小数的算法 nth_element 的函数原型如下 template<class RandomAccessIterator> void nth_element(RandomAccessIterator first, RandomAccessIterator nth,...

2014-04-30 16:48:02 2993 0

原创 【算法】中位数 median

median 是 STL 内部的算法,用于求三个数的中位数,它将用于 std::sort, std::nth_element 的实现中,快速排序和求第 k 小数算法都用到了划分,选取 pivot 时为“三者取中”,即 *first, *(first + (last - first) / 2), *...

2014-04-26 22:23:39 5747 0

原创 【算法】划分 partition

STL 中的划分算法 partition 的函数原型如下 template ForwardIterator partition(ForwardIterator first, ForwardIterator last, Predicate pred);四点说明: 1、作用:将 [first, la...

2014-04-25 21:44:52 6239 0

原创 【算法】插入排序 insertion_sort

准备写个《STL 源码剖析》的读书笔记,开个专栏,名为《STL 的实现》,将源码整理一遍。很喜欢侯捷先生写在封底的八个字:天下大事,必作于细!他在书中写到: 我开玩笑地对朋友说,这本书出版,给大学课程中的「数据结构」和「算法」两门授课老师出了个难题。几乎所有可能的作业题目(复杂度证明题除外),本书...

2014-04-22 17:20:19 2962 1

原创 用有限自动机实现正则表达式的匹配

问题:在主串中查找是否存在正则表达式为 abc*d?e 的匹配,下面用有限自动机的方法查找,该正则表达式的最简 DFA 如下 状态转换表如下图所示 程序中用二维数组定义如下 #define STATES_NUMBER 5 #define LETTER_NUMBER 5 // 表示 abc*d...

2014-03-08 18:33:12 7492 0

原创 C 语言中模拟“泛型”

一般在写 C 程序时用 typedef 将容器中元素的类型抽象,无法在同一个程序中用到两种类型,而本文试图在一个程序中用到两种不同类型的容器,比如实现类似于 C++ 中的 vector 和 vector。核心技术是将元素类型定义为 void *,管它什么类型,都用 void * 类型的指针指向真正...

2014-02-07 22:44:15 3400 0

原创 求二叉树的带权路径长度(深搜或广搜)

考研昨天结束了,专业课我考得不好,是408,算法题13分。今年是求二叉树的带权路径长度,我就写了算法思想,代码空白,因为时间来不及了,慌了,是心态的问题吧,做到最后有种天要塌下来的感觉,回来后很沮丧,因为我觉得自己是可以写出程序的,不服啊!  下面说说这道题目。树的带权路径长度(Weighte...

2014-01-06 17:28:56 6412 3

原创 上机实现操作系统课程中的 PV 操作

各位上过《操作系统》的同学都知道进程同步这个知识点,汤小丹那本“考研指定教材”上面描述 PV 操作是用 Pascal 语言的,看着真心难受,各种题目也是要求我们纸上写程序,本人真心反感,写了都不知道对不对。下面这个程序是在 Windows 下用 C 语言写的,选的例子是经典的“生产者消费者问题”,...

2013-11-06 17:27:21 1892 0

原创 用二级指针操作不带头结点的单链表

在不带头结点的单链表中删除特定元素,一种很麻烦的情况是首结点即要删的结点,所以往往标识一个链表的 head 就会改变,而在删除函数中要改变客户端的 head,就必须传入 head 的地址,否则客户端的 head 永远不会改变,也就是说,若形参为 Node * 类型,修改的只是 head 的副本,这...

2013-10-06 00:56:32 3065 8

翻译 用 C++ 标准模板库(STL)的 vector 实现二叉搜索树(BST)

本文由 Justme0 翻译自 Code Project 转载请参见文章末尾处的要求。 介绍 众所周知,要建一棵树,我们需要关注它的内存分配与释放。为了避开这个问题,我打算用C++ STL(vector和deque)来建一棵小型的BST。很明显,这篇文章是出于这个想法的。   背景 BST是...

2013-09-05 17:31:07 5816 0

原创 C 语言中实现数据与方法的封装

在 C 语言中可以用结构体代替类,用函数指针代替成员方法,实现数据成员与成员方法的封装,在客户端程序中写出的程序与 C++ 类似,唯一的不同是 C 语言中调用函数指针成员时必须将本对象的地址传给函数,因为 C 语言中各函数的地位是相同的。        本文以模仿 STL 中的 vector 类写...

2013-08-19 00:25:58 3228 0

原创 第一次面试

下午课刚上完,我收到了HR的通知,得知没有通过面试,这是一家在合肥的软件公司。挺不爽的,我觉得主要是因为经验少。还是谈谈面试官问我的两个技术问题吧,我应聘的是C++软件开发工程师。 1、STL中的map是线程安全的吗? 我的回答:标准中没有规定,但是基本上STL都实现了,是线程安全的。 其实是...

2013-05-24 17:46:48 2579 7

原创 USACO 1.2.2 Transformations(模拟)

分析        这是我第一次在ACM的题目中用OO的思想写的程序,看到标程,竟不谋而合,结构是类似的。对正方形这个类分析,将会使问题变得简单,我觉得OO的分析和设计挺关键的,其实我一开始也没设计好,原先准备把7个bool函数当成类的成员方法,其实这个设计是不好的,有点过了。其实应该是把旋转90...

2013-03-30 13:14:08 1482 1

原创 POJ 1151 Atlantis(离散化+扫描线)

题目大意: 求N个矩形的并的总面积。http://poj.org/problem?id=1151 参考了黑书上讲离散化的那两页,想到了上学期学的计算机图形学里的多边形填充算法。 src: /************************************************...

2013-03-28 11:59:05 1424 0

原创 USACO 1.1.4 Broken Necklace(模拟)

做这题做了一个下午,都快崩溃了。说下要点: 1、要注意'w'这种特殊情况,到某位置时,注意左边、右边是'w'的情况。 2、得把整个项链看出循环队列,所以指针移动时注意mod。 3、我用的还是暴力法,O(n^2),看解题报告有O(n)的算法,用的是DP,...

2013-03-24 00:18:36 1558 0

原创 完美二叉树(perfect)与正则二叉树(strict)的概念

“满二叉树(full)”的定义在国内和国外完全不同,国内指“完美二叉树(perfect)”,国外指“正则二叉树(strict)”,所以我建议国内外都取消“满二叉树(full)”这个叫法,这样就没有不必要的麻烦了。 总结如下: 参考资料: http://www.stackpop...

2013-02-25 10:36:28 6328 0

原创 读《STL源码剖析》有感

一个月之前的今天是我的生日,一位关系不错的同学送了我本《STL源码剖析》,还有位送了我本《C和指针》,我就看起来了,这些天都在考试,就经常晚上11点半过后拿个手电筒看,我特别认可一句话:“兴趣是最好的老师。”          《C和指针》里面的内容很细,我就先看了《STL源码剖析》。第一次正式...

2013-01-21 19:16:51 1800 0

原创 旋转字符串(循环移位,rotate)

旋转字符串是个经典问题。 要求:时间复杂度O(n),空间复杂度O(1)。 接口描述:http://www.sgi.com/tech/stl/rotate.html 《编程珠玑》、《编程之美》上都有这个问题,关于左旋右旋整个旋的方法我就不说了。 我的想法是,先左右比较,长的一段的大部分移...

2013-01-14 18:11:00 2088 0

原创 数组传参的三种方法:泛型;压扁数组;数组结构

数组传参很常见,在C/C++中传递数组时,数组名会退化为指针,所以一般都要给出首地址和长度。这是有缺陷的,当我们在写函数时不知道各维大小时该怎么办呢? 下面用矩阵乘法作为例子,给出三种实现方法:GP, flattening the array, struct 其中我认为flattening the...

2013-01-10 17:34:09 2091 0

原创 模拟处理机调度

一、先来先服务 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include using namespace std; unsigned int sysTime = 0; // 模拟系统的时钟,每运行一次就加...

2013-01-08 18:30:50 1180 0

原创 模拟虚存管理

1、页表的数据结构 页号 标志 主存块号 修改位 外存地址 struct PageItem { unsigned pageID; // 作业的页号 unsigned outMAddr; // 该页在外存...

2013-01-08 18:12:49 2011 0

原创 考研结束了

考研结束了,下一届就轮到我们了,今天还跟同学聊了考研的事,我对考研政治不感冒,为什么要叫我们学政治?为什么要把这种信仰强加给我们?而那些申请国外研究生的同学就不用学了,凭什么?这真的很矛盾。我以后想搞技术。看了王道论坛上大家发的那些计算机试题,我觉得找工作的同学也应该准备,到公司里同样也可以研究数...

2013-01-06 20:29:50 2730 1

原创 初尝“元编程”(C++描述)

先看两个计算斐波拉契数的程序: (1)运行时 #include using namespace std; const int N = 45; int Fib(unsigned n) { if (0 == n) return 0; if (1 == n) return 1; retu...

2013-01-02 22:40:56 1442 1

原创 CG实验2nd&3rd:二维几何变换、裁减、动画、三维透视

实验2 1、放缩与旋转 说明:关键得到变换矩阵, 放缩矩阵: doubleb[3][3] = { Sx,0, 0, 0,Sy, 0, -xF* Sx + ...

2013-01-01 12:48:24 1871 1

原创 CG实验4th:Bezier曲线

根据Bezier曲线的定义,画出曲线上密密麻麻的点即可。 运行结果: 源程序: /** * Justme0 * 绘制Bezier曲线 * */ #define _CRT_SECURE_NO_WARNINGS #include #include #include #...

2012-12-25 19:25:47 1383 0

原创 CG实验4th:消隐

消隐采用的是深度排序算法(油画家算法) 运行结果: 源程序: #define _CRT_SECURE_NO_WARNINGS #include #include #include "graphics.h" using namespace std; ...

2012-12-25 18:43:12 1024 0

原创 微软Metro风格颜色值

觉得微软新一代的产品logo颜色很新颖。 比如这个页面就很有特色:http://windows.microsoft.com/zh-CN/windows/home 下面这些值都是我用拾色器取的,找了一些主要的,希望对做设计的朋友有帮助。 微软logo 红Hex={F6,53,14} ...

2012-12-22 23:42:27 4798 0

原创 内存的连续分配与回收算法

几点说明: 部分代码参考《数据结构》教材。 1、采用空闲分区链链接空闲分区,用循环首次适应算法分配内存。   2、假定内存块的大小、地址以“字”为单位计。空闲区、作业区边界采用标识。 “字”的数据结构如下: leftLink tag size...

2012-12-01 13:47:51 3484 2

原创 做网站有感

这四个星期在做课程设计,内容就是B/S模式的网站,繁!之前不知道HTML、CSS、JavaScript之类的,只泛泛地自学了C#,借了本ASP.NET看,我一直认为这些是快餐式的知识,因为微软高度封装了它,如张小牛所说,“想会就会”。不像数据结构、计算机组成原理、操作系统、网络原理这些考研课!一个...

2012-11-24 00:54:21 1237 0

原创 auto_ptr类的源码注解

源码及注释如下,这比记忆语法好多了!个人认为,auto_ptr类设计地不行,比如都不能作为参数传递(传递后实参就没用了),失去了C指针的经典优势! // auto_ptr类的简化版,删除了有关auto_ptr_ref及auto_ptr的一些成员函数 template class auto_pt...

2012-10-21 21:08:05 1108 0

原创 定点小数补码一位乘(Booth比较法)

程序: // 定点小数补码一位乘(Booth比较法) // http://blog.csdn.net/justme0 #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; cons...

2012-10-18 11:34:28 4379 0

原创 定点小数补码一位乘(校正法)

程序: // 定点小数补码一位乘(校正法) // http://blog.csdn.net/justme0 #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; ...

2012-10-17 22:37:39 5444 0

原创 定点小数原码一位乘(C++实现)

这学期在学计组,这里将用C++实现各种运算方法,其实那些算法应该是用电路硬件实现的,用高级语言来描述一遍也挺有意义。 说明:输入输出的小数均以机器数表示,数值位为4位。 #define _CRT_SECURE_NO_WARNINGS #include #include #includ...

2012-10-16 23:03:36 5487 1

原创 重载下标运算符[]

看了bitset的源码,发现要重载下标运算符[]内容还挺多的,作右值时相对简单,只用来测试。作左值时就比较麻烦,因为要修改它的值。   1、作右值 举个例子: const bitset b; bool tag; tag = b.test(2); tag = b[2]; 上面第三...

2012-10-14 16:09:49 4644 0

原创 【库函数源码剖析系列】(6) strchr

strchr: // strchr #include char *Strchr(const char *s, int c) { for (; *s != (char)c; ++s) { if (*s == '\0') { return NULL;...

2012-09-29 00:53:05 2076 0

原创 【库函数源码剖析系列】(5) strcat

strcat: // strcat #include #include char *Strcat(char *dest, const char *src) { char *tmp = dest; while ('\0' != *dest) { dest++;...

2012-09-28 00:50:28 1303 0

原创 【库函数源码剖析系列】(4) strlen

strlen: // strlen #include size_t Strlen(const char *s) { const char *p = NULL; for (p = s; *p != '\0'; ++p) ; return p...

2012-09-25 19:59:42 1351 1

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