自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

零丁若叹

学会仰望天空,更要脚踏实地

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

原创 虚函数

1.虚函数在类内部声明,形式为:virtual (形参列表)虚函数的声明比普通函数多一个virtual,公有派生类中可以省略virtual关键字,派生类中重写虚函数,必须要求返回值类型形参列表一致,否则会发生同名覆盖。派生类只有在公有继承的方式继承基类时,才会有虚函数的正常使用。使用虚函数的例子:# include using namespace std;# include

2014-04-27 21:52:03 894

原创 整型溢出

1.当数据超出了类型的最值或者有符号数被解析成无符号数时,可能会发生溢出。整型溢出的形式有:1.存储溢出2.运算溢出3.符号导致的溢出对于存储溢出,加入int m=0x1000;char n=m;printf(“%d\n”,n)  结果会输出0,因为m占据4个字节的存储空间,而n占有一个,m赋值给n时,仅仅把最低字节给了n。对于运算溢出,假如unsignedchar a=255;unsigne

2014-04-27 09:02:54 4453

原创 重复出现的字符串

题目:给定一个字符串,求字符串中长度大于3的重复出现的子串。如“abcdeabcdfg”,长度大于3且重复出现的子串为abcd.解:使用后缀数组,把字符串的后缀进行排序,然后逐个比较相邻两个后缀,如果共同的长度大于3,则输出这个子串。# include # include # include int main(){ int com(char a[],char b[]); voi

2014-04-26 22:50:54 874

原创 最长公共子序列

给定两个序列X=和Y=,求X和Y长度最长的公共子序列。可以用动态规划的方法解决这个问题,建立数组c[i][j],i和j分别表示Xi 和Yj的的LCS长度,如果i=0,j=0,c[i][j]=0,根据最优子结构的性质,得到问题的递推公式为:

2014-04-26 22:48:18 923

原创 C++的内存分类

1.C++中的内存分为五大区域:(1)      栈   存放局部变量,函数形参 调用函数式系统会自动分配一个栈(2)      堆   存放由new存放的内存块,如果没有使用delete及时清理,会造成内存泄露(3)      自由存储区    存放由malloc申请的内存块,(4)      全局变量/静态变量区  存放全局变量静态变量(5)      常量区  存放整

2014-04-19 23:00:43 947

原创 字符串的连续递增数字串

求字符串的连续递增数字子串,如“abcd123456”

2014-04-19 18:32:40 3679

原创 递归函数的汇编表示

写入程序test.c:# include int fun(int n){if (n==0)return 0;if(n==1)return 1;elsereturn n+fun(n-1);}int main(){fun(4);return 0;}使用gcc –g test.c产生调试信息,使用gdb调试程序,反汇编后得到汇编代码(fun函数):(gdb) di

2014-04-13 11:24:52 2049

原创 字符串匹配

面试题:给一串很长的字符串,要求找到符合要求的字符串,例如目的串:”123”“1****3***2”,”12*****3”这些都要找出来思路一:利用两层循环,逐个查找目的串中的字符,比如先查找字符’1’是否在长字符串中,再查找’2’是否在长字符串中,直到目的串遇到’\0’代码是:# include # include # include int main(){ int

2014-04-12 13:55:31 897

原创 windows环境下使用gcc

windows环境下使用gccMinGw是Minimal GNU on Windows的缩写,允许在GNU/linux和windows平台生成本地的windows程序而不需要第三方运行时库。本文主要介绍MinGw的安装和使用。 (一)安装1.       下载min-gw安装程序,链接为:http://sourceforge.net/projects/mingw/files/,下载Do

2014-04-12 12:52:46 8206 6

转载 gdb常用命令

一、GDB常用命令简介 rrun运行.程序还没有运行前使用c            cuntinue  运行到下一断点处qquit                       退出tabtab命令补全功能h   help帮助sstep跟入函数nnext

2014-04-12 12:19:18 854

原创 字节对齐

数据对齐的目的是提高CPU读取元素的速度,有些CPU读取元素是从偶数地址开始的,这时如果一个int型的数据存放在起始地址为奇数的地方,这时将需要读取两次,然后将两次读取的结果合并到一起,显然这种方式低效的。改进的办法是让各种数据类型数据对齐,虽然这样增加了一些空间的开销,但它提高了CPU读取元素的效率。

2014-04-07 22:58:41 1034

原创 switch...case和if...else效率比较

1.switch的汇编表示写入switch的代码:int fun(char c) { char res; switch(c) { case 'a': res='a'; break; case 'e': res='e'; break; case 'i': res='i'; br

2014-04-07 17:28:49 13540 2

原创 找数组中最小的k个元素

求数组最小的k个元素,方法有很多,这里仅列举几种1.  使用排序的方法,排序可以选用复杂度较低的快速排序,时间复杂度为O(n*logn),也可以使用线性时间排序,但这时需要O(N)的空间复杂度。下面是使用快速排序求得最小的k个元素的方法。# include using namespace std;# include int cmp(const void* a,const voi

2014-04-07 12:03:51 1302

原创 字符串的反转

1.反转字符串例:hello world 变为 dlrow olleh程序为:# include using namespace std;# include int main(){ void reverse(char *s); char a[20]="hello world"; reverse(a); cout<<a<<endl; reverseword(a); c

2014-04-07 09:30:05 1068

原创 判断两个链表是否相交

判断两个链表是否相交,《编程之美》给出了以下方法:1.判断第一个链表的每个节点是否在第二个链表中,这种方法的时间复杂度为:O(length(h1)*length(h2)),这种方法很耗时间2.利用计数的方法   一个简单的做法是对第一个链表的结点地址进行hash排序,建立hash表,然后针对第二个链表的每个节点的地址查询hash表,如果它在哈希表中出现,那么说明第二个链表和第一个链表有共同的结

2014-04-06 17:18:38 1294

空空如也

空空如也

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

TA关注的人

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