08 2011 档案

数组排序后保证正数之间和负数之间的相对位置不变 负数在前 正数在后
摘要:假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数之间和正数之间元素相对位置不变。时空复杂度要求分别为:o(n),o(1)例如 -3 4 2 -1 7 3 -5 排序后 -3 -1 -5 4 2 7 3我的想法:#include<iostream>using namespace std;void arraydivsort(int a[],int n){int temp=0;int k=0;int flag=0;for(int i=0;i<n;){if(0==flag && a[i]<0) k=i;if(k-1& 阅读全文

posted @ 2011-08-31 21:08 原来... 阅读(2317) 评论(3) 推荐(0) 编辑

不开辟用于交换数据的临时空间,如何完成字符串的逆序
摘要://不开辟用于交换数据的临时空间,如何完成字符串的逆序(在技术一轮面试中,有些面试官会这样问)#include "stdafx.h"void change(char *str) { for(int i=0,j=strlen(str)-1; i<j; i++, j--){ str[i] ^= str[j] ^= str[i] ^= str[j];//等价于str[i] ^= str[j];str[j] ^= str[i];str[i] ^= str[j];str[i] += str[j];str[j] = str[i]-str[j];str[i] = str[i]-st 阅读全文

posted @ 2011-08-30 17:22 原来... 阅读(1559) 评论(0) 推荐(1) 编辑

深入理解按位异或运算符
摘要:深入理解按位异或运算符参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。即: 0^0 = 0, 1^0 = 1, 0^1 = 1, 1^1 = 0按位异或的3个特点:(1) 0^0=0,0^1=1 0异或任何数=任何数(2) 1^0=1,1^1=0 1异或任何数-任何数取反(3) 任何数异或自己=把自己置0按位异或的几个常见用途:(1) 使某些特定的位翻转 例如对数10100001的第2位和第3位翻转,则可以将该数与00000110进行按位异或运算。 10100001^00000110 = 10100111(2) 实现两个值的交换,而不必使用临时变量。 例如交换两... 阅读全文

posted @ 2011-08-30 17:20 原来... 阅读(38579) 评论(0) 推荐(11) 编辑

删除串中指定的字符
摘要:#include<iostream>using namespace std;int main(){int i,j,k;char s[]="asdfgd";cout<<"输入一个你想删除的字符:"<<endl;char c;cin>>c;k=0;for(i=0;s[i];i++){if(s[i]!=c){s[k++]=s[i];}}s[k]='\0';cout<<s<<endl;} 阅读全文

posted @ 2011-08-30 16:36 原来... 阅读(444) 评论(0) 推荐(0) 编辑

实现N*N矩阵的乘法,矩阵有一维数组表示
摘要:下面是一个实现3*3维数组的乘法!#include<iostream>#include<vector>using namespace std;int k=0;vector<int> c;void array(int a[],int n,int b[]){for(int i=0;i<n*n;){for(int j=0;j<n;j++){k=a[i]*b[j]+a[i+1]*b[j+3]+a[i+2]*b[j+6];c.push_back(k);} i=i+n;}for(int m=0;m<n*n;m++)cout<<c[m]< 阅读全文

posted @ 2011-08-30 08:49 原来... 阅读(750) 评论(0) 推荐(0) 编辑

再次看递归
摘要:#include<iostream>#include<set>using namespace std;void up_and_down(int i){cout<<i<<" "<<&i<<endl;if(i<4)up_and_down(i+1);cout<<i<<" "<<&i<<endl;}int main(){up_and_down(1);return 0;}运行结果如下:首先, main() 使用参数 1 调用 阅读全文

posted @ 2011-08-29 19:40 原来... 阅读(466) 评论(0) 推荐(0) 编辑

C++中静态成员函数访问非静态成员变量
摘要:C++中静态成员函数访问非静态成员变量先看一个classclass a{public:staticFunctionA(){menber=1;}private:intmenber;}编译上述代码,出错。原因很简单大家都知道,静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于整个对象,静态函数中的 member可能都没有分配内存。静态成员函数没有隐含的this自变量。所以,它就无法访问自己类的非静态成员。(看过一篇很好的文章《浅析C++中的this指针》介绍这个方面的详细内容)那要想访问怎么办呢?地球人都知道只要将:intmenber;//changethelineaboveto:s 阅读全文

posted @ 2011-08-29 11:03 原来... 阅读(18507) 评论(1) 推荐(1) 编辑

变态的指针用法
摘要:#include <windows.h>#include <iostream>using std::cout; using std::endl;int main(){char *str[]={"Welcome","to","Fortemedia","Nanjing"};char **p=str+1;//p指向str[1]str[0]=(*p++)+2; //p指向str[2] str[0]="\0"str[1]=*(p+1); //str[1]="Nanjing 阅读全文

posted @ 2011-08-22 08:49 原来... 阅读(538) 评论(0) 推荐(0) 编辑

区分接口继承和实现继承
摘要:理解了纯虚函数、简单虚函数和非虚函数在声明上的区别,然后就可以深刻的理解不同子类继承父类中的这些函数的区别!!!!我们就可以精确地指定你想让派生类继承什么:如果仅仅是接口(我们父类只用纯虚函数就能实现)还是接口和一个缺省实现(这个可以使用非纯虚函数即虚函数来实现)?或者,接口和一份实现代码(这个可以用纯虚函数实现,但是不同于仅仅继承接口时的纯虚函数,我们在这可以这样定义拥有自己的定义的纯虚函数,即父类中声明纯虚函数,然后再父类体外定义该纯虚函数;这样如果子类不想写此纯虚函数的实现,可以调用父类的该纯虚函数的实现方式,如果子类想自己实现,还可以自己实现)这个情形的实例如下面的代码:?因为这些不同 阅读全文

posted @ 2011-08-20 16:59 原来... 阅读(3811) 评论(0) 推荐(0) 编辑

C和C++混合编程(转)
摘要:C++项目中的extern "C" {}引言在用C++的项目源码中,经常会不可避免的会看到下面的代码:view sourceprint?1#ifdef __cplusplus 2extern "C" { 3#endif 45/*...*/67#ifdef __cplusplus 8} 9#endif它到底有什么用呢,你知道吗?而且这样的问题经常会出现在面试or笔试中。下面我就从以下几个方面来介绍它:1、#ifdef _cplusplus/#endif _cplusplus及发散 2、extern "C" 2.1、extern关键字2. 阅读全文

posted @ 2011-08-19 17:32 原来... 阅读(20086) 评论(3) 推荐(2) 编辑

C语言中如何在main函数开始前执行函数
摘要:在gcc中,可以使用attribute关键字,声明constructor和destructor,代码如下:view plain#include<stdio.h>__attribute((constructor))voidbefore_main(){printf("%s/n",__FUNCTION__);}__attribute((destructor))voidafter_main(){printf("%s/n",__FUNCTION__);}intmain(intargc,char**argv){printf("%s/n" 阅读全文

posted @ 2011-08-19 13:13 原来... 阅读(5016) 评论(0) 推荐(0) 编辑

typedef常见用法(转)
摘要:typedef常见用法1.常规变量类型定义例如:typedef unsigned char uchar描述:uchar等价于unsigned char类型定义 uchar c声明等于unsigned char c声明2.数组类型定义例如:typedef int array[2];描述:array等价于 int [2]定义; array a声明等价于int a[2]声明扩展:typedef int array[M][N];描述:array等价于 int [M][N]定义; array a声明等价于int a[M][N]声明3.指针类型定义例如: typedef int *pointer;描述:p 阅读全文

posted @ 2011-08-19 12:58 原来... 阅读(9417) 评论(1) 推荐(2) 编辑

跟我一起写 Makefile(转)
摘要:什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则 阅读全文

posted @ 2011-08-18 20:22 原来... 阅读(564) 评论(0) 推荐(0) 编辑

iterator和指针的区别
摘要:1.指针和iterator都支持与整数进行+,-运算,而且其含义都是从当前位置向前或者向后移动n个位置2.指针和iterator都支持减法运算,指针-指针得到的是两个指针之间的距离,迭代器-迭代器得到的是两个迭代器之间的距离3.通过指针或者iterator都能够修改其指向的元素通过上面这几点看,两者真的很像,但是两者也有着下面的几个不同地方1.cout操作符可以直接输出指针的值,但是对迭代器进行在操作的时候会报错。通过看报错信息和头文件知道,迭代器返回的是对象引用而不是对象的值,所以cout只能输出迭代器使用*取值后的值而不能直接输出其自身。2.指针能指向函数而迭代器不行,迭代器只能指向容器这 阅读全文

posted @ 2011-08-18 14:21 原来... 阅读(9072) 评论(0) 推荐(2) 编辑

全局变量可不可以定义在可被多个.C文件包含的头文件中?
摘要:全局变量可不可以定义在可被多个.C文件包含的头文件中?答案:可以,在不同的C文中中以static形式来声明同名的全局变量,可以在布偶年该的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错!建议不要在头文件中定义变量,头文件中只做变量的声明!为什么要声明为static的原因如下:1》每个.c文件,会编译成一个obj,这样,如果你在头文件中定义,而不是声明,那么每个引用这个头文件的obj中都会有一个这个变量的实例,连接的时候就会报重复定义出错了。2》static变量的作用域只在该编译单元内有效 阅读全文

posted @ 2011-08-17 22:00 原来... 阅读(6903) 评论(0) 推荐(1) 编辑

(inline)内联函数不能为虚函数的原因(virtual)
摘要:1.内联函数是个静态行为,而虚函数是个动态行为,他们之间是有矛盾的。2.我们之所以能看到一些象内联函数的虚函数,是因为某个函数是否是内联函数不是由我们说的算,而是由编译器决定的。我们只能向编译器建议,某个函数可以是内联函数(inline关键字),但是编译器有自己的判断法则。所以可能出现这样的情况: 2.1 我们用inline声明的函数却没有inline 2.2 我们没有用inline声明的函数却是inline 2.3 对于inline函数,编译器仍然将它编译成一个有地址的函数所以,情况比较复杂,从high-level来看的话很难判断函数是否是inline的,如果从low-level来看的话就比 阅读全文

posted @ 2011-08-17 21:26 原来... 阅读(5649) 评论(0) 推荐(0) 编辑

如何使 类的成员函数作为回调函数
摘要:如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递this指针给其成员函数从而实现程序函数可以访问C++的数据成员。这也可以理解为什么C++类的多个实例可以共享成员函数却-有不同的数据成员。由于this指针的作用,使得将一个CALL-BACK型的成员函数作为回调函数安装时就会因为隐含的this指针使得函数参数个数不匹配,从而导致回调函数安装失败。要解决这一问题的关键就是不让this指针起作用,通过采用以下两种典型技术可以解决在C++中使用回调函数所遇到的问题。这种方法具有通用 阅读全文

posted @ 2011-08-17 20:54 原来... 阅读(13890) 评论(2) 推荐(3) 编辑

sony面试题(输出* .这样的字符)
摘要:输出如图所示的图像的程序如下:(这是一道sony的面试题)#include<iostream>using namespace std;void dian(int n){while(n--){cout<<".";}}void xing(){cout<<"*";}int main(){cout<<"输入你需要输出的行数:"<<endl;int line;cin>>line;for(int i=1;i<=line;i++){int j=i;while(j--){x 阅读全文

posted @ 2011-08-17 18:44 原来... 阅读(384) 评论(0) 推荐(0) 编辑

12个球问题(转)
摘要:节选自:http://www.cnblogs.com/hlxs/archive/2011/08/17/2142820.html有十二个乒乓球形状、大小相同,其中只有一个重量与其它十一个不同,现在要求用一部没有砝码的天秤称三次,将那个重量异常的球找出来,并且知道它比其它十一个球较重还是较轻。一:天平两边先各6个球由于两边的重量肯定不等,不用称都知道天平肯定不能平衡,白白浪费一次,难道你自认为牛B到用2次就能得出结论,显然你不会这样认为,排除。二:天平两边先各5个球 如果天平不平衡,特殊的球可能在左边,也可能在右边,左边和右边个称一次,你得不出答案,但你却用了三次机会,Game Over。三:天平 阅读全文

posted @ 2011-08-17 13:17 原来... 阅读(415) 评论(0) 推荐(0) 编辑

怎么能够在异常出现的情况下也能够释放堆内存资源?--------------智能指针 try-finally
摘要:对于出现异常时,不能释放堆内存的问题:例如:#include <iostream> 02using namespace std; 03class normal_pointer_example 04{ 05public: 06normal_pointer_example(){cout<<"构造函数执行!\n";} 07~normal_pointer_example(){cout<<"析构函数执行!\n";} 08}; 09class normal_pointer_wrong{};//normal_pointer_wron 阅读全文

posted @ 2011-08-17 11:49 原来... 阅读(606) 评论(0) 推荐(0) 编辑

error C2713: Only one form of exception handling permitted per function
摘要:error C2713: Only one form of exception handling permitted per function错误的我的处理方式:(C++)当我在一个函数中同时使用try-catch try-finally的嵌套使用时,会提示上面的错误,错误的意思大概是,不允许在一个函数中出现两种异常的处理方式,我想是不是不能嵌套使用啊,于是我就在一个函数中同时使用这两个,但是不嵌套使用了,错误依然是上面的。现在我没办法了,只能在不在一个函数中同时使用了,我就用了一种折中的方案,即把这两种异常处理方式,分别在两个函数中实现,然后让另一个函数调用其中的一个函数。我们还可以让一个异 阅读全文

posted @ 2011-08-17 11:40 原来... 阅读(645) 评论(0) 推荐(0) 编辑

输入1则输出0,输入0则输出1
摘要:输入1则输出0,输入0则输出1那天小面试了吧,遇到这么个问题:输入0则输出1,输入1则输出0,当时想出前三种,最近在思考到底有没有其他方法来解答。1.最常见的IF-ELSE解法,最先进入脑海,当然,还有点傻傻的问HR,if-else判断算一种么? 1: #include <iostream> 2: 3: using namespace std; 4: int main() 5: { 6: int input; 7: cin >> input; 8: if (1 == input) 9: cout << 0; 10: else if (0 == input) 阅读全文

posted @ 2011-08-16 19:18 原来... 阅读(834) 评论(0) 推荐(0) 编辑

SQL SERVER 存储过程
摘要:SQL SERVER 存储过程学习笔记将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。 存储过程的优点 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。 3.存储过程可以重复使用,可减少数据库开发人员 阅读全文

posted @ 2011-08-16 13:37 原来... 阅读(438) 评论(0) 推荐(0) 编辑

where 1=0的含义
摘要:1。where 1=0; 这个条件始终为false,结果不会返回任何数据,只有表结构,可用于快速建表;2。where 1>0;始终为true,返回所有数据记录;3。where 1<0; 和1 一样另外表结构的意思如下:表结构就是定义一个表的字段、类型、主键、外键、索引,这些基本的属性组成了数据库的表结构例如:create table student (id int primarykey,name varchar,sex varchar,age varchar)id、name、sex这些就是字段,int varchar就是数据类型,primarykey为设置主键 阅读全文

posted @ 2011-08-16 11:33 原来... 阅读(2619) 评论(0) 推荐(0) 编辑

什么是游标
摘要:1.游标的概念游标是指向查询结果集的一个指针,它是一个通过定义语句与一条Select语句相关联的一组SQL语句。游标包含两方面的内容:●游标结果集:执行其中的Select语句所得到的结果集;●游标位置:一个指向游标结果集内的某一条记录的指针利用游标可以单独操纵结果集中的每一行。游标在定义以后存在两种状态:关闭和打开。当游标关闭时,其查询结果集不存在;只有当游标打开时,才能按行读取或修改结果集中的数据。2.使用游标一个应用程序可以使用两种类型的游标:前端(客户)游标和后端(服务器)游标,它们是两个不同的概念。无论使用哪一种游标,都需要经过如下几个步骤:●定义游标●打开游标●从游标中操作数据●关闭 阅读全文

posted @ 2011-08-16 11:10 原来... 阅读(4061) 评论(0) 推荐(2) 编辑

递归算法详细分析
摘要:C通过运行时堆栈支持递归函数的实现。递归函数就是直接或间接调用自身的函数。 许多教科书都把计算机阶乘和菲波那契数列用来说明递归,非常不幸我们可爱的著名的老潭老师的《C语言程序设计》一书中就是从阶乘的计算开始的函数递归。导致读过这本经书的同学们,看到阶乘计算第一个想法就是递归。但是在阶乘的计算里,递归并没有提供任何优越之处。在菲波那契数列中,它的效率更是低的非常恐怖。 这里有一个简单的程序,可用于说明递归。程序的目的是把一个整数从二进制形式转换为可打印的字符形式。例如:给出一个值4267,我们需要依次产生字符‘4’,‘2’,‘6’,和‘7’。就如在printf函数中使用了%d格式码,它就会执行. 阅读全文

posted @ 2011-08-15 11:01 原来... 阅读(456) 评论(0) 推荐(0) 编辑

寻找鞍点
摘要:题目:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。#include<iostream>using namespace std;void find_andian(int n,int m,int (*a)[4]){//int *p=a[0];int fl=0;int fh=0;int con=0;for(int i=0;i<n;i++){int max=a[i][0]; int min=a[i][0];for(int j=0;j<m;j++){if(a[i][j]>max){max=a[i][j];fl=j;fh=i;}}mi 阅读全文

posted @ 2011-08-14 15:58 原来... 阅读(453) 评论(0) 推荐(0) 编辑

搜狐 linux工程师面试题
摘要:linux系统工程师面试题:1.查看Linux系统当前单个共享内存段的最大值(命令)ipcs -m ipcs -a 2.用什么命令查询指定IP地址的服务器端口题意应该是 nmap 和nbtscan 命令来扫吧。3.crontab中用什么命令定义某个程序执行的优先级别nice/renice:进程执行优先级概念:进程优先级:系统按进程优先级的不同分配CPU时间,优先级高的进程会得到更多的CPU使用时间,以提高速度,缩短总的执行时间。进程优先级范围:-20至19最高等级:-20最低等级:19系统管理员有权将进程优先级设置为-1至-20,而普通用户只能设置0至19。进程运行的默认等级为0。用nice执 阅读全文

posted @ 2011-08-11 17:26 原来... 阅读(680) 评论(0) 推荐(0) 编辑

不排序 求海量数字中的中位数
只有注册用户登录后才能阅读该文。

posted @ 2011-08-11 13:18 原来... 阅读(68) 评论(0) 推荐(0) 编辑

vs2005连接sqlserver2005(C++)
摘要:#include <iostream>#include <stdio.h>#include <ICRSINT.H>#include <string.h>#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "adoEOF")using namespace std;int main(){CoInitialize(NULL);_RecordsetPtr m_pReco 阅读全文

posted @ 2011-08-11 10:52 原来... 阅读(2419) 评论(0) 推荐(0) 编辑

二维数组和指针
摘要:二维数组和指针⑴ 用指针表示二维数组元素。要用指针处理二维数组,首先要解决从存储的角度对二维数组的认识问题。我们知道,一个二维数组在计算机中存储时,是按照先行后列的顺序依次存储的,当把每一行看作一个整体,即视为一个大的数组元素时,这个存储的二维数组也就变成了一个一维数组了。而每个大数组元素对应二维数组的一行,我们就称之为行数组元素,显然每个行数组元素都是一个一维数组下面我们讨论指针和二维数组元素的对应关系,清楚了二者之间的关系,就能用指针处理二维数组了。设p是指向数组a的指针变量,若有:p=a[0];则p+j将指向a[0]数组中的元素a[0][j]。由于a[0]、a[1]┅a[M-1]等各个行 阅读全文

posted @ 2011-08-10 20:21 原来... 阅读(403) 评论(0) 推荐(0) 编辑

淘宝2011春季实习生笔试题
只有注册用户登录后才能阅读该文。

posted @ 2011-08-10 19:48 原来... 阅读(45) 评论(0) 推荐(0) 编辑

20/23种设计模式---C++实现
摘要:笨博文直接拷贝PDF文档所得,部分图片不能显示:常见设计模式的解析和实现常见设计模式的解析和实现(C++)之一-Factory模式作用:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。UML结构图:抽象基类:1)Product:创建出来的对象的抽象基类.2)Factory创建对象的工厂方法的抽象基类.接口函数:1)Creator::FactoryMethod:纯虚函数,由派生类实现,创建出对应的Product.解析:在这个模式中,有两个抽象基类,一个是Product为创建出来的对象的抽象基类,一个是Factory是工厂的抽象基类, 阅读全文

posted @ 2011-08-10 14:17 原来... 阅读(4914) 评论(0) 推荐(0) 编辑

23种设计模式--轻松扯淡理解方式
摘要:工厂模式, 工厂方法模式,单例模式, 外观(Facade)模式, 观察者(Observer)模式,桥接(Bridge)模式都是比较常用的,不同的项目有不同的设计方向,可以参考的设计模式也不尽相同,没有定数,只是上面这几个模式用的比较多一些。 其他的模式我找了一下,都列出来了。 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新 阅读全文

posted @ 2011-08-10 14:07 原来... 阅读(511) 评论(0) 推荐(0) 编辑

Bloom Filter概念和原理
摘要:Bloom Filter概念和原理Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。集合表示和元素查询下面我们具体来看Bloom Filter是如何用位数组表示集合的。初始状态时,Bloom Filt 阅读全文

posted @ 2011-08-10 11:38 原来... 阅读(1361) 评论(0) 推荐(0) 编辑

百度2011实习生招聘笔试题
摘要:第一题1.extern "C"{}是什么意思?其作用是什么? extern "C" 实现的类C和C++的混合编程2.写出至少两种设计模式,阐明其使用场景,有伪代码更好。 单例模式 适配器模式 工厂模式 装饰模式3.TCP中time_wait状态是什么意思?其好处和坏处分别是? 服务器在close socket之后便进入time_wait状态第二题1.有N个任务(N < 1000),其中有些任务的执行依赖于其他任务的执行,如A任务执行之后B任务才能执行,但这些任务之间不存在循环依赖。请用一个算法来输出这些任务的执行顺序。 拓扑排序2.查找一个文本内的 阅读全文

posted @ 2011-08-10 10:33 原来... 阅读(439) 评论(0) 推荐(0) 编辑

红黑树 VS AVL树
摘要:1 好处 及 用途红黑树并不追求“完全平衡”——它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。红黑树能够以O(log2 n) 的时间复杂度进行搜索、插入、删除操作。此外,由于它的设计,任何不平衡都会在三次旋转之内解决。当然,还有一些更好的,但实现起来更复杂的数据结构 能够做到一步旋转之内达到平衡,但红黑树能够给我们一个比较“便宜”的解决方案。红黑树的算法时间复杂度和AVL相同,但统计性能比AVL树更高。当然,红黑树并不适应所有应用树的领域。如果数据基本上是静态的,那么让他们待在他们能够插入,并且不影响平衡的地方会具有更好的性能。如果数据完全是静态的,例如,做一个哈希表,性能可 阅读全文

posted @ 2011-08-10 10:23 原来... 阅读(1623) 评论(0) 推荐(0) 编辑

socket编程之SCTP的实现
摘要:SCTP 学习小程序[borrow from internet]ubuntu 下安装 libsctp, lksctp(不行的话在redHat下试验)apt-get install libsctp lksctp服务端程序 1: #include <stdio.h> 2: #include <stdlib.h> 3: #include <string.h> 4: #include <sys/types.h> 5: #include <sys/socket.h> 6: #include <netinet/in.h> 7: #in 阅读全文

posted @ 2011-08-09 13:40 原来... 阅读(8281) 评论(1) 推荐(1) 编辑

如何在ns2中实现一个简单的网络协议
摘要:用IE不会有显示的问题Firefox有的代码显示不出来;这篇文章适合初学者,关于初学者应该参考的文档:NS by Example、NS2 Beginners Page都有很多实例可以参考。本文通过实现一个简单的传输协议来说明如何在ns2中实现网络协议,当然,这个协议非常简单,但是在ns2中实现协议(不是修改)的流程大体就是这个样子的了。我们称这个简单的协议做:simple_trans协议,我们一步一步来,把simple_trans这个协议慢慢做的复杂。首先我想要明确一个概念:什么是在ns2中实现网络协议,不把这个问题搞明白我们都不知道自己在做什么。网路协议顾名思义网络上运行的协议,网络是由关系 阅读全文

posted @ 2011-08-09 13:39 原来... 阅读(3601) 评论(0) 推荐(0) 编辑

error C2712: Cannot use __try in functions that require object unwinding
摘要:C/C++中error C2712: Cannot use __try in functions that require object unwinding我的解决办法如下:以vs2005为例(vc++6.0没有对应选项可以选择)点击 项目-属性-C/C++-代码生成 把启用c++异常给关了(关过之后会出现一系列的警告)设置如下 阅读全文

posted @ 2011-08-09 13:20 原来... 阅读(3619) 评论(0) 推荐(0) 编辑

基础篇—SQL语句相关概念及练习
摘要:一、SQL 基础知识1、DDL(数据定义语言)1)创建数据表--创建数据表create table Test(Id int not null, Age char(20));--创建数据表create table T_Person1(Id int not null,Name nvarchar(50),Age int null);--创建表,添加外键Create table T_Students(StudentNo char(4),CourseNo char(4),Score int,Primary key(StudentNo),Foreign key(CourseNo) References T 阅读全文

posted @ 2011-08-08 20:51 原来... 阅读(1102) 评论(0) 推荐(1) 编辑

C++请不要问我string s=”a”+”b”分配了几次内存
摘要:C++请不要问我string s=”a”+”b”分配了几次内存 首先我要告诉你,string s="a"+"b";在C++中连编译都通过不了,错误提示:“+:不能添加两个指针”。你说他分配几次内存。为什么报错呢,原因很简单,”a”是一个字符数组,字符数组没有自己的加法运算符。你硬是要这么写,自己实现去,当然在java,js,C#(我还是个C#程序员啊,什么时候才能成为C++程序员呢?哥带着这个难题一直在学习C++)中这句话是正确的。那是因为这些语言把一些基础的东西都封装了,或者说这些语言实现了字符数组的加法运算符。 当我们把这句话改成string a=” 阅读全文

posted @ 2011-08-08 20:45 原来... 阅读(654) 评论(0) 推荐(0) 编辑

C++ 关键字 (try-finally)
摘要:try-finally语句是Microsoft对C和C++语言的扩展,它能使32位的目标程序在异常出现时,有效保证一些资源能够被及时清除,这些资源的清除任务可以包括例如内存的释放,文件的关闭,文件句柄的释放等等。try-finally语句特别适合这样的情况下使用,例如一个例程(函数)中,有几个地方需要检测一个错误,并且在错误出现时,函数可能提前返回。#include <windows.h>#include <stdio.h>try-finally语句的语法与try-except很类似,稍有不同的是,__finally后面没有一个表达式,这是因为try- finally语 阅读全文

posted @ 2011-08-08 19:45 原来... 阅读(8199) 评论(0) 推荐(0) 编辑

C++ 正则表达式
摘要:首先需要下载并安装boost;然后再vs中进行配置(注意要根据自己的vs版本下载对应的boost);然后再vs中配置以vs2005为例:打开 项目—属性(或者是项目中的最后一项)“伏击包含目录”中添加你boost的安装目录(注意是boost的安装目录的最后一级包含所有boost安装文件的目录)然后同样的操作配置lib文件 “附加库目录”中添加boost中的lib文件如下图(不是libs 谨记)简单的例子:#include<iostream>#include<string>#include"boost/regex.hpp"using namespace 阅读全文

posted @ 2011-08-08 17:04 原来... 阅读(623) 评论(0) 推荐(0) 编辑

正则表达式
摘要:.:单个字符范围:[字符集合]非范围:[^字符集合]\r:回车\n:换行\t:Tab键\d:[0-9]\D:[^0-9]\w:[0-9a-zA-Z_]\W:[^0-9a-zA-Z_]\s:[\f\n\r\t\v]\S:[^\f\n\r\t\v]+:一个或多个*:0个或多个?:0个或一个{n}:匹配n个{min,max}:匹配范围{0,1}:?{0,}:*{1,}:+?:惰性匹配与贪婪匹配的区别\b:其后字符位于字符串首位,其前的字符位于字符串尾部边界:空格、段落首行、段落末尾、逗号、句号、-\B:匹配非边界字符小贴士:文件名称尽量用-,而不是用_.^:全部文本首$:全部文本尾部():匹配结果视 阅读全文

posted @ 2011-08-08 16:44 原来... 阅读(267) 评论(0) 推荐(0) 编辑

如何写一个完善的c++异常处理类(转)
摘要:我们的异常处理类的features如何写一个异常处理类是一个不太容易的事情,最近刚好接触了一些不错的代码,看到了一些技巧,这里和大家分享一下。一个相对完善的异常处理类(以及附加的一些东西)应该能够处理下面的一些功能:1) 能够方便的定义异常类的继承树2) 能够方便的throw、catch,也就是在代码中捕获、处理代码的部分应该更短3) 能够获取异常出现的源文件的名字、方法的名字、行号4) 能够获取异常出现的调用栈并且打印出来由于目前我用的平台是linux,所以里面调用的一些函数也只是在linux下面有用。Windows也肯定是具有相应的函数的,具体可能需要去查查首先科普一些内容:1) 对于没有 阅读全文

posted @ 2011-08-08 08:51 原来... 阅读(660) 评论(0) 推荐(0) 编辑

Visual C++中的异常处理浅析[轉]
摘要:Visual C++提供了对C语言、C++语言及MFC的支持,因而其涉及到的异常(exception)处理也包含了这三种类型,即C语言、C++语言和MFC的异常处理。除此之外,微软对C和C++的异常处理进行了扩展,提出了结构化异常处理(SEH)的概念,它支持C和C++(与之相比,MFC异常处理仅支持C++)。一个典型的异常处理包含如下几个步骤:(1)程序执行时发生错误;(2)以一个异常对象(最简单的是一个整数)记录错误的原因及相关信息;(3)程序检测到这个错误(读取异常对象);(4)程序决定如何处理错误;(5)进行错误处理,并在此后恢复/终止程序的执行。C、C++、MFC及SEH在这几个步骤中 阅读全文

posted @ 2011-08-08 08:49 原来... 阅读(851) 评论(0) 推荐(0) 编辑

指定位置 指定位数的转换
摘要:unsigned int intvert(unsigned int x,int p,int n)实现对 x 的进行转换,p 为起始转 化位,n 为需要转换的长度,假设起始点在右边.如 x= 0b0001 0001,p=4,n=3 转换后 x=0b0110 0001 #include<iostream>#include<assert.h>using namespace std;unsigned int intvert(unsigned int x,int p,int n) //假定 p=4,n=3 { unsigned int t=0;unsigned int a=1; 阅读全文

posted @ 2011-08-07 10:38 原来... 阅读(191) 评论(0) 推荐(0) 编辑

O(N)的时间复杂度找出a[N]中那个重复的数字
摘要:数组 a[N],存放了 1 至 N-1 个数,其中某个数重复一次。写一个函数,找出被重复的数 字 .时间复杂度必须为 o(N)函数原型:方法一:#include<iostream>using namespace std;int main(){int a[]={1,2,3,4,5,6,8,7,8};int n=sizeof(a)/sizeof(int);int j=n-1;for(int i=0;i<n&&j>i;){if(a[i]!=a[j]){j--;if(j==i+1){i+=1;j=n-1;}}if(a[i]==a[j]){cout<< 阅读全文

posted @ 2011-08-07 10:01 原来... 阅读(531) 评论(0) 推荐(0) 编辑

ASCII Binary文件
摘要:什么是二进制文件 什么是ASCII 什么是文本文件 它们之间有什么区别ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:5 6 7 8二进制文件是按二进制的编码方式来存放文件的。例如, 数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示, 但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。 因此也把这种文件称作“流式文件”。ASCII文件就是文本文件, 阅读全文

posted @ 2011-08-06 14:46 原来... 阅读(2087) 评论(0) 推荐(0) 编辑

在某个范围内寻找最大的f(n)=n 其中f(n)为计算小于等于n的数值中含有“1”的总和
摘要:#include<iostream>using namespace std;pair<int,int> mypair;int count_1(int n) //统计一个数值中含有“1”的个数{int sum=0;while(n!=0){if(n%10==1){sum++;}n/=10;}return sum;}int f(int n) //<=n内的所有数值含有“1”的个数的总和{int sum=0;while(n){sum+=count_1(n);n--;}return sum;}int main(){int maxcount=0;int count=0;int 阅读全文

posted @ 2011-08-03 21:32 原来... 阅读(526) 评论(0) 推荐(0) 编辑

求一个字符串中连续出现次数最多的子串
摘要:vector向量中的插入值如上图所示:#include <iostream>#include <vector>#include<string>using namespace std;pair<int ,string> fun(const string &str){vector<string> substrs;int maxcount=1,count=1;string substr;int i,len=str.length();for(i=0;i<len;i++){substrs.push_back(str.substr( 阅读全文

posted @ 2011-08-03 19:42 原来... 阅读(3884) 评论(0) 推荐(1) 编辑

约瑟夫问题
摘要:#include<iostream>using namespace std;typedef struct student{ int data; struct student *next;}node;void JOSEPHUS(int k,int m) //创建单链表{ node *head,*p,*s; int x,cycle=1; head=(node *)malloc(sizeof(node)); p=head; int n=0; while(cycle) { cout<<"请输入一直不为0的数,输入0则结束"<<endl; cin& 阅读全文

posted @ 2011-08-03 14:29 原来... 阅读(334) 评论(0) 推荐(0) 编辑

对 带头结点的单链表 的操作
摘要://带头结点的单链表#include<iostream>using namespace std;typedef struct student{ int data; struct student *next;}node;node * creat() //创建单链表{ node *head,*p,*s; int x,cycle=1; head=(node *)malloc(sizeof(node)); p=head; while(cycle) { cout<<"请输入一直不为0的数,输入0则结束"<<endl; cin>>x; i 阅读全文

posted @ 2011-08-03 14:26 原来... 阅读(1042) 评论(1) 推荐(0) 编辑

malloc的内存分配之 malloc(0)的内存分配情况
摘要:#include<iostream>using namespace std;int main(){ char *p; if((p=(char *)malloc(0))==NULL) puts("got a null pointer"); else puts("got a valid pointer");}答案:got a valid pointer首先: 在标准的malloc实现中,并不检查输入值的大小,而是将输入值做对齐操作后直接从堆上分配空间。其次: 不论输入值的大小为多少,在malloc的内部最小的内存分配大小是一个定值(一般是8B), 阅读全文

posted @ 2011-08-03 14:24 原来... 阅读(9370) 评论(0) 推荐(1) 编辑

位制转换的问题----%f %d 对int型 double型转换期间的问题
摘要:对于这样的程序输出结果#include<iostream>using namespace std;int main(){printf("%f",5);printf("%d",5.01);}我的分析是这样的:首先注意(栈中的数字是从高位向地位存储的!比如 int a=3;&a指的是低位地址 不是高位地址,即是int的末尾 而不是int的开头位置。)其实,在我们当我们弄清楚浮点数的存储格式之后,就会明白其中的奥妙了。 在C语言标准中,浮点数是采用IEEE754标准 float类型数据存储格式如下:最高位最低位符号S 阶码E 尾数M 最高位 阅读全文

posted @ 2011-08-02 22:03 原来... 阅读(1864) 评论(1) 推荐(2) 编辑

构造函数定义为private,protected
摘要:将构造函数,析构函数声明为私有和保护的,那么对象如何创建?已经不能从外部调用构造函数了,但是对象必须被构造,应该如何解决,麻烦大家帮忙说明,关于构造,析构函数声明为私有和保护时的用法???提出这个问题,说明你已经对c++有所思考了。从语法上来讲,一个函数被声明为protected或者private,那么这个函数就不能从“外部”直接被调用了。对于protected的函数,子类的“内部”的其他函数可以调用之。而对于private的函数,只能被本类“内部”的其他函数说调用。语法上就是这么规定的,你肯定也知道的咯。那么为什么有时候将构造函数或者析构函数声明为protected的或者private的?通 阅读全文

posted @ 2011-08-02 20:48 原来... 阅读(29303) 评论(2) 推荐(6) 编辑

SQL点---------性能优化没有那么神秘
摘要:经常听说SQL Server最难的部分是性能优化,不禁让人感到优化这个工作很神秘,这种事情只有高手才能做。很早的时候我在网上看到一位高手写的博客,介绍了SQL优化的问题,从这些内容来看,优化并不都是一些很复杂的问题,掌握了基本的知识之后也可以尝试优化自己的SQL程序,甚至是其他相关的程序。优化是一些工作积累之后的经验总结和代码意识,只要平时注意积累,你也可以做优化的工作。这一篇随笔是转载,不过我强烈推荐,下一次别人谈论优化的时候我们这些小菜就可以跟侃侃而谈了,不至于面面相觑,不知所措。给出地址:http://blog.csdn.net/haiwer/article/details/282688 阅读全文

posted @ 2011-08-02 20:16 原来... 阅读(635) 评论(0) 推荐(0) 编辑

C++ 组合
摘要:如果鸟是可以飞的,那么鸵鸟是鸟么?鸵鸟如何继承鸟类?[美国某著名分析软件公司2005年面试题] 解析:如果所有鸟都能飞,那鸵鸟就不是鸟!回答这种问题时,不要相信自己的直觉!将直觉和合适的继承联系起来还需要一段时间。 根据题干可以得知:鸟是可以飞的。也就是说,当鸟飞行时,它的高度是大于0的。鸵鸟是鸟类(生物学上)的一种。但它的飞行高度为0(鸵鸟不能飞)。 不要把可替代性和子集相混淆。即使鸵鸟集是鸟集的一个子集(每个驼鸟集都在鸟集内),但并不意味着鸵鸟的行为能够代替鸟的行为。可替代性与行为有关,与子集没有关系。当评价一个潜在的继承关系时,重要的因素是可替代的行为,而不是子集。 答案:如果一定要让鸵 阅读全文

posted @ 2011-08-02 20:05 原来... 阅读(3272) 评论(0) 推荐(0) 编辑

Determining the Size of a Class Object----sizeof(class)
摘要:Determining the Size of a Class ObjectBy Girish ShettyThere are many factors that decide the size of an object of a class in C++. These factors are:Size of all non-static data members Order of data members Byte alignment or byte padding Size of its immediate base class The existence of virtual funct 阅读全文

posted @ 2011-08-02 17:53 原来... 阅读(690) 评论(0) 推荐(0) 编辑

构造函数不能是虚函数的原因
摘要:构造函数不能声明为虚函数的原因是:所谓虚函数就是多态情况下只执行一个,而从继承的概念来讲,总是要先构造父类对象,然后才能是子类对象,如果构造函数设为虚函数,那么当你在构造父类的构造函数时就不得不显示的调用构造,还有一个原因就是为了防错,试想如果你在子类中一不小心重写了个跟父类构造函数一样的函数,那么你的父类的构造函数将被覆盖,也即不能完成父类的构造.就会出错. 阅读全文

posted @ 2011-08-02 15:00 原来... 阅读(364) 评论(0) 推荐(1) 编辑

C++类中的常量
摘要:C++类中的常量由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用 const 修饰数据成员来实现。const 数据成员的确是存在的,但其含义却不是我们所期望的。const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其 const 数据成员的值可以不同。 不能在类声明中初始化 const 数据成员。以下用法是错误的,因为类的对象未被创建时,编译器不知道 SIZE 的值是什么。 Code highlighting produced by Actipro CodeHighlighter (freeware)http 阅读全文

posted @ 2011-08-02 14:41 原来... 阅读(9051) 评论(1) 推荐(4) 编辑

输入字符串,找出该字符串中abc出现的位置
摘要:#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;int main(){vector<char> vec;vector<char>::iterator it;cout<<"输入第一个字符串"<<endl;char ch;while((ch=getchar())!='#')vec.push_back(ch);for(it=vec.begin 阅读全文

posted @ 2011-08-02 11:14 原来... 阅读(680) 评论(0) 推荐(0) 编辑

C++ explicit的作用
摘要:explicit作用:在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。explicit使用注意事项: * explicit 关键字只能用于类内部的构造函数声明上。 * explicit 关键字作用于单个参数的构造函数。 * 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换例子:未加explicit时的隐式类型转换 1. class Circle 2. { 3. public: 4. Circle(double r) : R(r) {} 5. Circl 阅读全文

posted @ 2011-08-02 09:57 原来... 阅读(97867) 评论(7) 推荐(11) 编辑

ABCDE*4=EDCBA
摘要:一个5位数字ABCDE*4=EDCBA ,这5个数字不重复,输出这样的数字#include<iostream>#include<stack>#include<algorithm>#include<cmath>using namespace std;int reverse(int i){int resualt=0;stack<int> mys;for(int j=4;j>=0;j--){mys.push((i/(int)pow(10,j)));i=i%((int)pow(10,j));}for( j=4;j>=0;j--){ 阅读全文

posted @ 2011-08-01 14:19 原来... 阅读(4921) 评论(1) 推荐(0) 编辑

C++符号优先级
摘要:PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an objectScoping operatorPost-incrementPost-decrement(a + b) / 4;array[4] = 2;ptr->age = 34;obj.age = 34;Class::age = 2;for( i = 0; i < 10; i++ ) ...for 阅读全文

posted @ 2011-08-01 11:41 原来... 阅读(2203) 评论(0) 推荐(0) 编辑

STL list链表的用法详解
摘要:本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂。不失为STL的入门文章,新手不容错过! 0 前言 1 定义一个list 2 使用list的成员函数push_back和push_front插入一个元素到list中 3 list的成员函数empty() 4 用for循环来处理list中的元素 5 用STL的通用算法for_each来处理list中的元素 6 用STL的通用算法count_if()来统计list中的元素个数 7 使用count_if()的一个更加复杂的函数对象。 8 使用STL通用算法find()在list中查找对象 9 使用S 阅读全文

posted @ 2011-08-01 08:38 原来... 阅读(28803) 评论(3) 推荐(4) 编辑

导航