- 博客(20)
- 资源 (5)
- 收藏
- 关注
原创 运用比较器实现机制(函数对象和指针对象)实现最大堆和最小堆
先来看STL源码://priority_queue模板源码:templateclass_Container = vector,class_Pr = less >classpriority_queue{ // priority queue implemented with a _Containerpublic: explicitpriority_queue(const_Pr& _Pred) : c(), comp(_Pred) { //To u
2011-03-08 21:10:00
1051
原创 我也来写KMP
网上看了很多关于KMP算法,唉,毕竟不是中国人自己写出来的东西,所以有的人乱写一通(当然,在您眼中,我或许也是),比如KMP算法中有一个公式,对着这个公式进行得出next数组的值,比如下面:(1)next[0]= -1 意义:任何串的第一个字符的模式值规定为-1。(2)next[j]= -1 意义:模式串T中下标为j的字符,如果与首字符相同,且j的前面的1—k个字符与开头的1—k个字符不等(或者相等但T[k]==T[j])(1≤k如:T=”abCabCad” 则 next[6]=-1,因T[3]=T[6
2010-10-10 20:45:00
854
原创 将文件之间的编译依赖关系降至最低
考虑这样几个类,A、a1、a2、B,其中A和B是要暴露给用户的类。 1.最初组织关系如下: //a1.h#include class a1{public: void DoSomething() { std::cout }}; //a2.h#include class a2{public: void DoSomething() { std::cout }};
2009-08-24 15:52:00
1352
转载 C语言编译全过程
编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 编译的完整过程:C源程序-->预编译处理(.c)-->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.exe、.elf、.axf等)1
2009-07-26 22:19:00
734
原创 c++变量初始化(猜想......)
全局的、名字空间的、静态的对象会被自动初始化适当类型的0。堆,容器中和类的显式空构造函数的对象会被调用其构造函数初始化,但并不会被初始化为相应的0,(没有数组)如 char ch[10]; for(int i = 0; i cout 结构和类成员的初始化:谈到结构和类成员,除非提供显示的构造函数进行初始化,否则可以分为以下两种(是否用默认构造函数初始化):c
2009-07-24 16:58:00
1225
原创 c++内存到底分几个区?!
一个由c/C++编译的程序占用的内存分为以下几个部分 (大致有3种说法) 一:1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局
2009-07-24 13:19:00
4269
转载 消息分析器-----HANDLE_MSG
windows消息分析器的实现很好理解,windows操作系统使用消息处理机制,那么,我们所设计的程序如何才能分辨和处理系统中的各种消息呢?这就是消息分析器的作用. 简单来说,消息分析器就是一段代码,在我的讲述中,将分7重来循序渐进的介绍它.从最初的第1重到最成熟的第7重,它的样子会有很大的变化.但,实现的功能都是一样的,所不同的,仅仅是变得更加简练罢了. 程序开始时
2009-07-23 17:47:00
1956
转载 Linux c 输出中文
今天在优快云的Blog首页看到一篇文章“也谈计算机字符编码 ”,由于前一阵业余翻译了“UTF-8 and Unicode FAQ for Unix/Linux”一文,自己对字符集、编码和Unicode等内容一直保着者很强的兴趣,自然不会放过这样的文章。作者的文章写得很明白易懂,虽然有一些概念上的细节问题我觉得有商榷之处;作者还给出一个简单的在windows下使用wprintf正确
2009-07-14 14:09:00
7581
原创 程序语言的分类
程序语言可分为5类(严格意义上分为2、4、5三类) 1、web page script languages 就是网页代码,比如Html、javascript、Css、Asp、Php、Xml都应该属于此类(Html不应该属于anguages的,可能他觉得太简单了吧,不过我觉得Html也应该算的,大家爱听谁的就听谁的好了,这个不重要) 2、Interpreted Languages(解释
2009-07-10 17:16:00
3858
转载 C++中extern “C”含义深层探索
C++中extern “C”含义深层探索1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重
2009-07-07 13:45:00
766
原创 C++/VC++ 命名及其他规范
第一部分:共性规则共有八项。作为指导供成员采纳。【规则1】标识符应简单明了,望文知意。标识符采用英文单词。切忌使用汉语拼音来命名。程序中的英文单词一般不要太复杂,用词应当准确。例如不要把CurrentValue写成NowValue。尽量不要使用单词缩写或首字母缩写。只有当标识符过长时才考虑使用单词缩写。在使用缩写时,不要自创缩写,尽量使用被广泛接受的缩写。
2009-07-03 23:19:00
3644
1
原创 Windows字符编码那些事儿
1. visual studio项目中的Character Set设置 vs里的cs设置有三种,NS,Unicode,MBCS,后两种皆是显示设置编译条件,即是向Command Line中添加UNICODE和_UNICODE宏、 _MBCS宏,而当采用NS的设置时,以下两种写法便出现了差异: #ifdef UNICODE#define myPrint myPrintW#elif
2009-07-03 10:21:00
4097
原创 DLL入门
DLL: 1.构建DLL,选择Export Symbols+Procompiled header工程 2.调用DLL,一般为静态调用: 2.1 .h 直接用#include "DLL/dll.h"或者将DLL添加到工程属性c/c++->General->Additional Include Directories里 2.2 .lib 直接添加已存
2009-07-02 00:14:00
801
转载 linux安装软件详细解答 rpm tar.gz tar.z tar.bz2 tar.tgz .deb .bin
在Windows下安装软件时,只需用鼠标双击软件的安装程序,或者用Zip等解压缩软件解压缩即可安装。在Linux下安装软件对初学者来说,难度高于Windows下软件安装。下面我就详细讲解Linux下如何安装软件。先来看看Linux软件扩展名。软件后缀为.rpm最初是Red Hat Linux提供的一种包封装格式,现在许多Linux发行版本都使用;后缀为.deb是Debain Linux提供的
2009-07-01 00:29:00
2617
转载 Visual C++中函数调用方式浅探
函数调用的几个概念:_stdcall,_cdecl(c declare).... 左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,但不同的是函数名的修饰部分(关于函数名的修饰部分在后面将详细说明)。 _stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自
2009-06-30 10:31:00
1337
转载 c#多线程教学(5):Case 学习多线程
在前面的多线程编程系列的文章中,我们了解了在.NET中多线程编程必须要掌握的基本知识,但是可能大家看了文章之后,感觉还是很模糊,对一个具体的编程可能还是觉得无从下手,究其原因可能是理论讲的过多,而没有太多的实际参考例子,造成收获不大。因此,在接下来的文章中,我将给出几个典型的多线程编程的实例,让大家有更清楚的认识。Case 1 - No synchronization 在我们的第一个例子中,
2009-06-13 19:07:00
756
转载 c#多线程教学(4):线程池和异步编程
如果你仔细阅读了我前面的三篇文章,我相信你对用.NET Framework提供的System.Threading.Thread类和一些线程同步的类基本的线程知识和多线程编程知识很了解。我们将在这里进一步讨论一些.NET类,以及他们在多线程编程中扮演的角色和怎么编程。它们是: System.Threading.ThreadPool 类 System.Threading.Timer 类 如果
2009-06-13 18:59:00
641
转载 c#.net多线程编程教学(3):线程同步
随着对多线程学习的深入,你可能觉得需要了解一些有关线程共享资源的问题. .NET framework提供了很多的类和数据类型来控制对共享资源的访问。 考虑一种我们经常遇到的情况:有一些全局变量和共享的类变量,我们需要从不同的线程来更新它们,可以通过使用System.Threading.Interlocked类完成这样的任务,它提供了原子的,非模块化的整数更新操作。 还有你可以使用Sys
2009-06-13 18:58:00
576
转载 c#.net多线程编程教学(2):Thread类
这章将向大家介绍.NET中的线程API,怎么样用C#创建线程,启动和停止线程,设置优先级和状态. 在.NET中编写的程序将被自动的分配一个线程.让我们来看看用C#编程语言创建线程并且继续学习线程的知识。我们都知道.NET的运行时环境的主线程由Main ()方法来启动应用程序,而且.NET的编译语言有自动的垃圾收集功能,这个垃圾收集发生在另外一个线程里面,所有的这些都是后台发生的,让我们无法感
2009-06-13 18:57:00
577
转载 .NET多线程编程(1):多任务和多线程
在.NET多线程编程这个系列我们讲一起来探讨多线程编程的各个方面。首先我将在本篇文章的开始向大家介绍多线程的有关概念以及多线程编程的基础知识;在接下来的文章中,我将逐一讲述。NET平台上多线程编程的知识,诸如System.Threading命名空间的重要类以及方法,并就一些例子程序来作说明。 引言 早期的计算硬件十分复杂,但是操作系统执行的功能确十分的简单。那个时候的操作系统在任一时间点只
2009-06-13 18:56:00
623
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人