C/C++
文章平均质量分 70
xiao_0429
这个作者很懒,什么都没留下…
展开
-
《C++程序设计语言》笔记之四
7. 类层次结构多继承中的问题:歧义性解析:class Task{// ...virtual debug_info* get_debug();};class Displayed{// ...virtual debug_info* get_debug();};对于Satelite类:class Satelite: public Task,原创 2013-01-22 08:06:54 · 452 阅读 · 0 评论 -
了解KMP算法
教你初步了解KMP算法作者: July 、saturnma、上善若水。 时间; 二零一一年一月一日-----------------------本文参考:数据结构(c语言版) 李云清等编著、算法导论引言:在文本编辑中,我们经常要在一段文本中某个特定的位置找出 某个特定的字符或模式。由此,便产生了字符串的匹配问题。本文由简单的字符串匹配算法转载 2013-09-13 12:33:02 · 976 阅读 · 0 评论 -
STL sort源码剖析
转载自:http://www.cnblogs.com/imAkaka/archive/2012/03/20/2407877.htmlSTL sort源码剖析STL的sort()算法,数据量大时采用Quick Sort,分段递归排序,一旦分段后的数据量小于某个门槛,为避免Quick Sort的递归调用带来过大的额外负荷,就改用Insertion Sort。如果递归层次过深,还会改转载 2013-09-11 22:11:10 · 693 阅读 · 0 评论 -
STL 容器使用方法
STL容器使用方法1. vector的使用vector的主要方法有:constructor(vector()),push_back(),pop_back(),erase(),clear(),insert(),begin(),end(),size(),empty(),front(),back(),resize(),[] #include #include #inclu原创 2013-09-11 22:21:31 · 1205 阅读 · 0 评论 -
红黑树介绍与分析
红黑树介绍与分析 最近觉得C++生疏了,拿出侯捷的《STL源码剖析》翻了翻,看到C++ set,map底层实现机制,其中采用的就是红黑树数据结构,另外Linux内核对内存管理和进程调度都用到了红黑树,看来它不能让人小视。自己从网上和书上重新看了下红黑树,把个人的理解放到博客上,跟大家讨论,也作为自己的重新梳理的方式。 红黑树(Red-Black Tree转载 2013-09-11 19:30:44 · 774 阅读 · 0 评论 -
C++中四种类型转换方式
C++中四种类型转换方式 类型转换有C风格的,当然还有C++风格的。C风格的转换的格式很简单(type)expression,但是C风格的类型转换有不少的缺点,有的时候用C风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间的差别是巨大的原创 2013-09-10 22:22:59 · 467 阅读 · 0 评论 -
sizeof(++i) 结果
转载地址:http://hi.baidu.com/fyging/item/2daabed4552e4e48fb576809在网上看到的代码: int i=1; cout cout改变一下: int i=1; cout cout这次结果仍然转载 2013-09-03 15:41:33 · 1014 阅读 · 0 评论 -
VS 2005 下错误:syntax error : missing ';' before identifier 'PVOI
VS 2005 下错误:syntax error : missing ';' before identifier 'PVOI在另外一台机子上运行好的程序,换了一台就不行了。。。在VS2005上使用DirectShow,首次编译发现出现以下错误: error C2146: syntax error : missing ';' before identifie转载 2013-07-02 17:24:47 · 1000 阅读 · 0 评论 -
多继承下的“模棱两可”问题
多继承下的“模棱两可”的问题 对于多继承,如果继承的多个类有相同的方法,在调用时会出现错误,例如如下的代码: #include using namespace std;class Lottery{public: virtual int draw();};int Lottery::draw(){ cout << "Lotte原创 2013-06-22 19:55:10 · 788 阅读 · 0 评论 -
笔面试中的机试
笔面试中的机试 计算机的从业人员,coding是必不可少的技能,真正的实战成了一些公司的考察内容。从未参加过这种实战性质的考核,前两场基本以失败告终,特此总结以做警告,以作为今后同样考核方式的一个参考与经验教训。 两次机试的失误与教训: 由于以前没有进行过实战性质的活动,包括竞赛,公司笔面试考核等,因此欠缺经验,吃亏不小。机试一般都是使用O原创 2013-09-29 21:17:59 · 1353 阅读 · 0 评论 -
数数字二进制表示中1的个数
1. 数数字二进制表示中1的个数 参考《编程之美》代码,如下三个方法(剩余两种方法不考虑) 对于Count1,无论正数还是负数,否可以正确数出其中1的个数。而对于 Count2,如果参数写为int v,传递负数,则进入死循环,而对于Count3,如果为负数,其中的符号位上的1无法计数。#include using namespace std;i原创 2013-09-14 22:21:07 · 616 阅读 · 0 评论 -
C++笔试面试题目集合
1. 非C++内建型别A和B,在哪几种情况下B能隐式转化为A?[C++中等]答: a) class B : public A { ……} // B公有继承自A,可以是间接继承的 b) class B { operator A( ); } // B实现了隐式转化为A的转化 c)class A { A( con原创 2013-09-28 20:44:13 · 811 阅读 · 0 评论 -
从Hello World得到教训
从Hello World得到教训想做一些ACM试题,就从第一道题开始了,每一门语言的开篇,Hello World!没错就是它啦。试题如下题目很简单啦,就是输入一行数字,然后输出其对应的字符便好。#include #include int main(){ char input; while((scanf("%c", &input)) !原创 2012-11-18 21:03:16 · 439 阅读 · 0 评论 -
关于DLL导出函数的总结
一直在鼓捣DLL,每天的工作都是调试一个一个的DLL,往DLL里面添加自己的代码,但是对于DLL一直不太了解啊!今天一查资料,才发现自己对于DLL编写的一些基本知识也不了解。要学习,这篇文章先总结DLL的导出函数的方法。 首先说一下如何建立DLL工程!原创 2015-08-12 00:16:25 · 12102 阅读 · 1 评论 -
编写可读,简洁代码的原则
1. 代码分块原则 a. 代码要进行分块,最基本的分块方法是写成函数。 函数功能要明确,且函数的长度不宜过长。切忌将一个函数写成大过程。 尽量少用多重循环,两重以上的循环,就需要将其拆分,将较深的循环放入到函数中。2. 职责单一原则 函数要简单,每个函数尽量只完成一个功能。(原创 2015-03-03 14:36:25 · 599 阅读 · 0 评论 -
笔试面试题目4(基础知识)
1. 指向类成员函数的指针:首先 函数指针是指向一组同类型的函数的指针;而类成员函数我们也可以相似的认为,它是指向同类中同一组类型的成员函数的指针,当然这里的成员函数更准确的讲应该是指非静态的成员函数。函数指针实例:typedef int (*p)(int,int); //定义一个接受两个int型且返回int型变量的函数指针类型int func(int x,int y)原创 2013-10-16 17:23:38 · 761 阅读 · 0 评论 -
C/C++标准输入输出与文件输入输出
C语言输入输出函数有很多,标准I/O函数中包含了如下几个常用的函数:标准输入输出:1. scanf, printfint scanf(const char *format, arg_list)scanf主要从标准输入流中获取参数值,format为指定的参数格式及参数类型,如scanf("%s,%d",str,icount);它要求在标准输入流中输入类似"son原创 2013-09-29 17:41:55 · 21317 阅读 · 0 评论 -
二叉树的非递归先序,中序,后序遍历
二叉树的非递归遍历: 先序遍历,中序遍历,后序遍历#include #include using namespace std;typedef struct node{ char data; struct node *lchild; struct node *rchild;} BiNode, *BiTree;//先序递归创建树,这里原创 2013-09-27 10:56:36 · 787 阅读 · 0 评论 -
面试题目集合
1、寻找一个字符串中最长的重复子串。 如 abcdabc 最长重复串 是abc#include using namespace std; void substr(char *a)//统计数组a中重复出现的最长的子序列{ for(intn = 0; a[n]!='\0'; ++n); intcount = 1; fo转载 2013-09-13 20:51:40 · 799 阅读 · 0 评论 -
笔试面试题目1
1. 求重合段的长度size_t foo(unsigned int *a1, size_t al1, unsigned int* a2, size_t al2)其中a1和a2都为无符号数组,al1和al2为数组的长度,数组的长度为偶数。无符号数组由一对数字区间组成。如下例:a1 为 0,1,3,6,10,20a2 为 0,1,20,50,4,5则 a1表示以下区原创 2013-09-28 09:22:14 · 1099 阅读 · 0 评论 -
关于继承而来的缺省参数
关于继承的缺省参数 继承而来的缺省参数,不言而喻,就是函数的缺省参数。 缺省参数对于非虚函数而言,由于“覆盖”现象,使得结果不会出现问题,那个类型就会调用自己的对应函数,而不会出现动态绑定或动态调用。 如下例所示,对于非虚函数而言,缺省参数不会出问题: #include using namespace std;原创 2013-06-22 16:23:21 · 781 阅读 · 0 评论 -
C语言中的typedef关键字的使用
C语言中的typedef关键字的使用代码:#include typedef int (*FP_CALC)(int, int);//定义函数指针类型//注意这里不是函数声明而是函数定义,它是一个地址,你可以直接输出add看看 int add(int a, int b) { return a + b;}int sub(int转载 2013-05-28 21:18:36 · 627 阅读 · 0 评论 -
C和C++中的一些问题
C和C++中的一些问题1. C语言是否可以进行重载?测试代码如下: #include #include int f(int a, char b) { return a; } float f(int a, float b) { return b; }原创 2013-05-14 00:59:30 · 8416 阅读 · 0 评论 -
《C语言深度剖析》笔记之关键字篇
1. staticC语言中的static有两种作用,一种是修饰变量,另外一种是修饰函数。static修饰的变量,无论全局还是局部,她们的内存均位于静态区,也即整个程序生命周期内,一直存在,但是对于全局变量,对静态变量的使用也是在其定义之后才可以使用。对于局部变量,比如一个函数内的静态变量,每一次调用函数,均使用该变量,且其原来的值仍然可见。static修饰的函数,则将函数的作用域局限在原创 2012-11-26 08:50:29 · 591 阅读 · 0 评论 -
C++ STL笔记
C++ STL组件STL提供三种类型的组件:容器,迭代器和算法。1. 容器有两类,分为顺序容器,关联容器。顺序容器:Vector,list,dequeue,string等;关联容器:set,multiset,map,multimap2. 迭代器的作用是遍历容器。3. STL算法库包含四类算法:排序,不可变序算法,变序性算法 和数值算法。1. vector原创 2012-12-06 15:11:15 · 1790 阅读 · 0 评论 -
STL的迭代器
STL 主要是由 containers(容器),iterators(迭代器)和 algorithms(算法)的 templates(模板)构成的. 对应于它们所支持的操作,共有五种 iterators(迭代器)。 input output / forwar转载 2012-12-06 11:31:35 · 414 阅读 · 0 评论 -
《C语言深度剖析》笔记 之 指针与数组
1. 编译器的bugchar ch = 10;char * p = (char *)0x12ff7c;*p = NULL;p = NULL;代码执行后,*p 还是 0x12ff7c上的内容吗?答案不是,p值变为了0x0012ff00。原因就是编译器认为是将NULL赋值给char 类型的内存,所以指针p的低地址上的一个字节赋值为0。书作者的测试环境是Visual C++原创 2012-11-27 10:28:43 · 462 阅读 · 0 评论 -
《C语言深度剖析》笔记 之 符号和预处理
1. 关于几个似是而非的注释问题a) int/*...*/i; //注释放在类型和变量之间b) char * s = "abcedf //hijklm"; // 注释符在字符串里面c) // 注释写在多行中,使用换行符是否有效 // Is it a \ valid comment?d) in/*...*/t i; //原创 2012-11-27 09:58:59 · 476 阅读 · 0 评论 -
对数组名取地址
int a[5]={1,2,3,4,5};int b[100];一个数组名代表的是数组中第一个元素的位置,通过数组名我们可以访问数组,先看下面两个问题问题一:看到一篇文章这么写的。。int array[10]; int (*ptr)[10]; ptr=&array; //这里说明&array是指向数组的指针,但为什么&array是指向数组的指针? 答转载 2012-10-11 20:33:55 · 678 阅读 · 0 评论 -
C语言判断文件夹或者文件是否存在的方法
C语言下判断文件夹或文件是否存在的方法方法一:access函数判断文件夹或者文件是否存在 函数原型: int access(const char *filename, int mode); 所属头文件:io.h filename:可以填写文件夹路径或者文件路径 mode:0 (F_OK) 只判断是否存在 2 (R_OK) 判断写入权限转载 2012-07-21 15:48:43 · 922 阅读 · 0 评论 -
深度剖析C++模型对象
1. C++对象模型: 其他的两种曾经提出的对象模型: 1.简单对象模型: 对象是一个slot集合,每一个slot即一个指针,指向成员变量或成员函数 如下图所示,对象是由一系列slot组成,一个slot执行一个类方法或类变量。 2.原创 2012-06-18 22:17:04 · 2128 阅读 · 0 评论 -
《C语言深度剖析》笔记之C语言基础测试题
C语言基础测试题1. 代码输出:void foo(void){unsigned int a = 6;int b = -20;(a+b > 6) ? puts(">6") : puts("}结果输出: >6解释:在计算过程中,会出现隐式类型转换, int 转换为 unsigned int , -20将被转化为一个很大的数字。因此a+b很大。2.原创 2012-11-24 21:50:44 · 662 阅读 · 0 评论 -
《C++设计与演化》 的一些片段
1. 存储分配和构造函数:这个小节也可以概括为为什么有new 和 delete运算符。与C语言中一样,C++对象有3中分配方式:在堆栈上(在自动存储区),在固定的地址(静态存储区),以及自由空间中(在堆中,或者说是动态空间中)。所有这些情况下都必须调用构造函数,以便建立起这个对象。用C从自由空间分配一个对象时,只是涉及到调用一个分配函数,例如:monitor * p = (monit原创 2012-12-15 10:12:51 · 421 阅读 · 0 评论 -
《C++程序设计语言》笔记之五
9. 标准库关联容器:关联数组是用户定义的类型中最常见的也是最有用的一类,在关注文字处理和符号处理的语言里,关联数组甚至是一种内部类型。关联数组也被称为映射,或字典,保存的是值的对偶。给定一个关键码的值,就可以访问其对应的 映射值的值。关联容器是关联数组的推广,map是传统的关联数组,其中与每个关键码相关联的有唯一的一个值,multimap是允许元素中出现重复关键码的关联数原创 2013-01-23 09:13:39 · 447 阅读 · 0 评论 -
三目运算符的右结合性分析
三目运算符的右结合性分析转自:http://blog.sina.com.cn/s/blog_6b7c77e00100ucqq.html 问题:对于表达式 --a == b++ ? a++ : b++ 当然是先判断--a 是否等于 b++ ,然后决定执行后面的哪个表达式。但是它的又结合性体现在哪里呢?? 回答:这里涉及了C语言中转载 2013-05-03 15:33:36 · 1716 阅读 · 0 评论 -
小谈C++的函数重载,成员函数覆盖与成员函数隐藏
小谈C++的函数重载,成员函数覆盖与成员函数隐藏 函数重载:函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。在一个类内,可以将功能相似的函数进行重载,一方面方便调用,另一方面使得类简洁。注意同一作用域不单单指类作用域内的成员函数,非成员的全局函数也可以进行重载。其规则为:相同的函数名,不同的参数列表。不同的参数列表包括参数的类型不同原创 2013-04-16 11:23:38 · 843 阅读 · 0 评论 -
C++的类对象的sizeof值和this指针
C++的类对象的sizeof值和this指针#include using namespace std;class A{protected: char a;public: A(){ a = 'a';} virtual void print(); void printa();};void A::print()原创 2013-03-21 13:37:45 · 1439 阅读 · 0 评论 -
SQLite数据库使用笔记与文档翻译草稿
SQLite SQLite是一个SQL数据库引擎,该引擎具有自包含,无服务器,零配置,事务性等特征。SQLite是目前被部署最广泛的一个SQL数据库引擎,并且其是开源的项目。 开始使用 首先要下载对应的预编译库,或者下载源码自己进行编译。 创建新的数据库: 在shell 或 dos 命令行中原创 2013-03-13 13:29:39 · 1339 阅读 · 0 评论 -
《C++程序设计语言》笔记之三
5. 模板简单的String模板:template class String{struct Srep;Srep *rep;public:String();String( const char C*);String(const String&);C read( int i) const;// ...};template前缀说明了当前原创 2013-01-16 10:11:21 · 344 阅读 · 0 评论 -
《C++程序设计语言》笔记之一
1. 基本类型:bool类型:按照定义true具有值1,false具有值0。于此对应,整数可以隐式地转换为bool值,非零的整数转换为true,而0转换为false。在算术和逻辑表达式里面,bool都将被转为int,在转换为int后进行相应的计算。bool b = 8; // bool(8)是true,所以b赋值为trueint i = true; // i原创 2013-01-13 15:52:07 · 551 阅读 · 0 评论