随笔分类 -  C and CPlusPlus

KMP 模板
摘要:好久没写算法类程序了 ,总觉得脑子有点秀逗了,拿个kmp练练,慢慢找回状态 1 #include<stdio.h> 2 #include<string.h> 3 4 #define MAXN 1000 5 6 int Kmp_Map(const char* str, const char* pat) 7 { 8 if (NULL== str || NULL == pat) 9 return -1;10 11 int i, j;12 int next[MAXN];13 14 for (i = 1, j = -1; *(pat + i); j =... 阅读全文

posted @ 2012-10-23 21:11 ltang 阅读(612) 评论(0) 推荐(0)

Linux on Power 上的调试工具和技术
摘要:简介试程序有很多方法,例如向屏幕上打印消息,使用调试器,或者只需仔细考虑程序如何运行,并对问题进行有根有据的猜测。在修复 bug 之前,首先要确定在源程序中的位置。例如,当一个程序产生崩溃或生成核心转储(core dump)时,您就需要了解是哪行代码发生了崩溃。在找到有问题的代码行之后,就可以确定这个函数中变量的值,函数是如何调用的,更具体点说,为什么会发生这种错误。使用调试器查找这些信息非常简单。本文将简要介绍几种用于修复一些很难通过可视化地检查代码而发现的 bug 的技术,并阐述了如何使用在 Linux on Power 架构上可用的工具。回页首调试内存问题的工具和技术动态内存分配看起来似 阅读全文

posted @ 2011-08-17 23:34 ltang 阅读(495) 评论(0) 推荐(0)

各种字符串Hash函数比较
摘要:转自 beyond the void常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎不可能找到碰撞。常用字符串哈希函数有BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash等等。对于以上几种哈希函数,我对其进行了一个小小的评测。Hash函数数据1数据2数据3数据4数据1得分数据2得分数据3得分数据4得分平均分BKDRHash20477448196.5510090.9582. 阅读全文

posted @ 2011-04-24 21:01 ltang 阅读(734) 评论(0) 推荐(0)

用Gvim建立IDE编程环境 (Windows篇)
摘要:转自LeeMonCC说明:本文是作者在完全按照著名的《手把手教你把Vim改装成一个IDE编程环境》一文,在Windows XP上用gvim建立IDE环境时所作的备忘。原作地址:吴垠的专栏0.准备软件及插件。(a)gvim72.exe 地址ftp://ftp.vim.org/pub/vim/pc/gvim72.exe。(b)vimcdoc-1.7.0-setup.exe 地址http://prdownloads.sourceforge.net/vimcdoc/vimcdoc-1.7.0-setup.exe?download(c)ec57w32.zip 地址http://prdownloads.s 阅读全文

posted @ 2011-03-29 15:35 ltang 阅读(440) 评论(0) 推荐(0)

(转帖)关于访问同类引用参数的私有变量的疑问
摘要:#include <iostream>using namespace std;class T {public: T(){a = 11;} int Get() const{return a;}private: int a;};class Test{public: Test(int a):m_a(a){} Test(const Test &t){m_a = t.m_a;} //拷贝构造函数,通过同类型的引用参数访问私有变量 Test& operator=(const Test &t) //赋值操作函数,通过同类型的引用参数访问私有变量 { m_a = t.m_a 阅读全文

posted @ 2011-02-22 16:05 ltang 阅读(481) 评论(0) 推荐(0)

ATL_NO_VTABLE 详解
摘要:ATL_NO_VTABLE:A symbol that prevents the vtable pointer from being initialized in the class's constructor and destructor.(阻止class生成虚函数表指针)基类虚函数表会被派生类覆盖掉,所以我们可以对基类使用 ATL_NO_VTABLE 避免产生虚函数表!ATL是通过多重继承来实... 阅读全文

posted @ 2010-10-26 10:50 ltang 阅读(729) 评论(0) 推荐(0)

(转载)C++ 关于宏:AFX_EXT_CLASS
摘要:使用 AFX_EXT_CLASS 导出和导入扩展DLL使用 AFX_EXT_CLASS 宏导出类;链接到扩展 DLL 的可执行文件使用该宏导入类。使用 AFX_EXT_CLASS 宏,用于生成扩展 DLL 的相同头文件可以与链接到 DLL 的可执行文件一起使用。在 DLL 的头文件中,将 AFX_EXT_CLASS 关键字添加到类的声明中,如下所示:class AFX_EXT_CLASS CMyC... 阅读全文

posted @ 2010-10-26 10:49 ltang 阅读(1626) 评论(0) 推荐(0)

利用nothrow new代替普通new
摘要:标准的new头文件可以定义普通的new,同时,它也可以定义一个变体new操作符,这个操作符叫做nothrownew。在这个章节里,我将它的基本原理并向你们展示如何使用nothrow new。普通的new:过去和现在普通new一个异常的类型std::bad_alloc。这个是标准适应性态。在早期C++的舞台上,这个性态和现在的非常不同;new将返回0来指出一个失败,和malloc()非常相似。在一定... 阅读全文

posted @ 2010-10-26 10:48 ltang 阅读(696) 评论(0) 推荐(0)

C++中使用空格的建议
摘要:(1) 关键字之后要留空格。像const、virtual、inline、case 等关键字之后至少要留一个空格,否则无法辨析 关键字。像if、elseif、for、while、switch 等关键字之后应留一个空格再跟左括号“(”,以突出关键 字;(2) 函数名之后不要留空格,无论是在原型、定义还是在调用中;(3)“(”、“[&rdq... 阅读全文

posted @ 2010-10-25 15:06 ltang 阅读(7263) 评论(0) 推荐(2)

多重继承和虚继承的内存布局
摘要:转自: 刺猬@http://blog.csdn.net/littlehedgehog这篇文章主要讲解虚继承的C++对象内存分布问题,从中也引出了dynamic_cast和static_cast本质区别、虚函数表的格式等一些大部分C++程序员都似是而非的概念。原文见这里(ByEdsko de Vries, January 2006)敬告:本文是介绍C++的技术文章,假定读者对于C++有比较深入的认识,同时也需要一些汇编知识。本文我们将阐释GCC编译器针对多重继承和虚拟继承下的对象内存布局。尽管在理想的使用环境中,一个C++程序员并不需要了解这些编译器内部实现细节,实际上,编译器针对多重继承(特别 阅读全文

posted @ 2010-10-25 10:37 ltang 阅读(1749) 评论(0) 推荐(0)

程序元素的存储类型、作用域、生存周期和连接类型
摘要:程序元素存储类型作用域生存周期连接类型全局ADT/UDT定义—文件—内连接嵌套的ADT/UDT定义—类—内连接局部ADT/UDT定义—程序块—无连接非静态全局函数和全局变量extern文件永久外连接静态全局函数和全局变量static文件永久内连接局部非静态变量/常量auto程序块临时无连接局部静态变量/常量static程序块永... 阅读全文

posted @ 2010-10-12 10:23 ltang 阅读(411) 评论(0) 推荐(0)

存储类型
摘要:标准C语言为变量,常量和函数定义了4种存储类型,即:extern, auto, static,register. 这4种存储类型可分为两种生存期限:永久的(即在整个程序执行期间都存在)和临时的(即暂时保存在堆栈和寄存器中)。 extern和static用来标识永久生存期限的变量和函数,而auto和register则用来标识临时生存期限的变量(注意,只有变量才具有临时生存期限),一个变量或函数只能... 阅读全文

posted @ 2010-10-12 09:45 ltang 阅读(725) 评论(0) 推荐(0)

导航