03 2012 档案

摘要:#define BITSPERWORD 32#define SHIFT 5#define MASK 0x1f#define N 1000000int a[1+N/BITSPERWORD];void set_i(int i){a[i>>SHIFT] |= (1<<(i&MASK)); //a[i>>SHIFT] 每1个int32位为一个桶,a[i>>SHIFT]相当于找那个32位, //1<<i(i&MASK),32位中中的那位为1}int test_i(int i){return a[i>>SHIFT] & 阅读全文
posted @ 2012-03-31 22:47 foreverlearn 阅读(368) 评论(0) 推荐(0)
摘要:问题描述:问题:一个最多包含n个正整数的文件,每个数都小于n,n = 100 00000。文件中的正整数没有重复的,请按升序排列这些整数。可用内存空间只有1MB左右,运行时间在10秒左右。选择方案:1:归并排序,32为整数,1M的内存空间,每次可以读入约250 000(25万)个数(注意估计方法,1M 10的6次方,1百万字节,1G,10的9次方,10亿字节)那就需要40次读入,第一次遍历文件,对0-249 999的树进行排序,第二次对250 000到499 999之间的数排序,瓶颈在于需要40次读入文件2:利用位图和位向量解决,该排序的特征为:数据没有重复,数据限制在较小的范围内,除了单一整 阅读全文
posted @ 2012-03-31 16:11 foreverlearn 阅读(317) 评论(0) 推荐(0)
摘要:二叉树的操作参考:[1]http://www.cnblogs.com/dolphin0520/archive/2011/08/25/2153720.html [2]http://www.bccn.net/article/kfyy/sjjg/200706/4585.html#include"stdio.h" #include<iostream> #include<stack> using namespace std; //数据结构 typedef struct node { int value; struct node *lchild; struct 阅读全文
posted @ 2012-03-29 21:15 foreverlearn 阅读(245) 评论(0) 推荐(0)
摘要:vectorvector::erase函数iterator erase ( iterator position ); iterator erase ( iterator first, iterator last );Removes from the vector container either a single element (position) or a range of elements ([first,last)).Because vectors keep an array format, erasing on positions other than the vectorendal 阅读全文
posted @ 2012-03-27 14:47 foreverlearn 阅读(140) 评论(0) 推荐(0)
摘要:内容来自《21天C++》和《efective c++》c风格的类型转换char * pszString = "hello world!";int* pBuf = (int *)pszString;c风格的类型转换实际上是强迫编译器根据程序员的选择来解释目标对象C++提供了一种新的类型转换运算符,专门用于继承的情形,这种情形在c中并不存在4个类型转换运算符如下:const_cast 通常用来将对象的常量性转除(cast away the constness)。它是唯一有此能力的C++-style转型操作符。dynamic_cast用来执行继承体系中安全的向下转型或跨系转型动作 阅读全文
posted @ 2012-03-27 13:39 foreverlearn 阅读(276) 评论(0) 推荐(0)
摘要:class String { public: String(const char *src = NULL);//构造函数 String(const String &other);//拷贝构造函数 ~String(void);//析构函数 String & operator =(const String &other);//赋值函数 void ShowString(); private: char *m_data; }; //String 的构造函数 String::S... 阅读全文
posted @ 2012-03-26 20:36 foreverlearn 阅读(212) 评论(0) 推荐(0)
摘要:1:数组越界和unsigned char#define MAX 255 void main() { unsigned char i; unsigned char A[MAX]; for(i = 0; i <= MAX; i++)//i达到255后,加1变为0,无线循环下去 { A[i] = i; printf("*%d*",A[i]); } }两个问题:数字越界和无限循环,char的范围[-128,127],unsigned char [0,255],--------------------------------------------------------... 阅读全文
posted @ 2012-03-26 10:40 foreverlearn 阅读(150) 评论(0) 推荐(0)
摘要:死锁:死锁的产生需要一定的条件:要有一个或者多个执行线程和一个或者多个资源,每个线程都在等待其中一个资源,但所有的资源都已经别占用了,所有的线程都在相互等待,但他们永远不会释放已经占有的资源,于是任何线程都无法继续,这便意味着死锁的发生死锁产生的条件:1:资源不能被共享,只能由一个进程使用2:请求与保持条件(Hold and wait)已经得到资源的进程可以再次申请新的资源3:非剥夺条件(No Pre-emption)已经分配的资源不能被剥夺4:循环等待(Circular Wait):系统中若干进程组成环路,该环路中的每个进程都在等待相邻进程使用的资源大部分内容取自:http://www.ib 阅读全文
posted @ 2012-03-26 10:22 foreverlearn 阅读(122) 评论(0) 推荐(0)
摘要:判断x是否为2的若干次幂关键运算 i & (i - 1)i 和 i-1的二进制区别,i若为2的若干次幂,则i与i-1的区别为相反----------------10000000000000001000000000000000000000000000000001----------------20000000000000010000000000000000100000000000000001----------------40000000000000100000000000000001100000000000000001----------------800000000000010000 阅读全文
posted @ 2012-03-24 11:58 foreverlearn 阅读(641) 评论(0) 推荐(0)
摘要:指针不仅可以指向数据,也可以指向函数,假设编写了integrated的函数用来求a和b点之间的函数f的积分。我们希望函数integrate通过传递f作为实际参数的方式变得更为通用函数integrate的原型如下:double integrate( double (*f)(double),double a, double b);在*f周围的圆括号说明f是个指向函数的指针,而不是函数的返回值为指针,把f声明成好像就是函数也是合法的double integrate( double f(double),double a, double b);在编译器看来,这种原型和前一种形式是完全一样的在调用函数in 阅读全文
posted @ 2012-03-22 21:29 foreverlearn 阅读(187) 评论(0) 推荐(0)
摘要:转自:http://developer.51cto.com/art/201104/256820.htm一.C语言中的static关键字在C语言中,static可以用来修饰局部变量,全局变量以及函数。在不同的情况下static的作用不尽相同。(1)修饰局部变量一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的话,该变量便存放在静态数据区,其生命周期一直持续到整个程序执行结束。但是在这里要注意的是,虽然用static对局部变量进行修饰过后,其生命周期以及存储空间发生了变化,但是其作用域并没有改变,其仍然是一个局部变量,作用域 阅读全文
posted @ 2012-03-22 20:31 foreverlearn 阅读(159) 评论(0) 推荐(0)
摘要:第五章:对链接的思考动态链接允许系统提供一个庞大的函数库集合,可以提供多种有用的服务,但是程序将在运行时寻找他们,而不是把这些函数库的二进制代码作为自身可执行文件的一部分静态链接:如果函数库的一份拷贝是可执行文件的物理组成部分,称之为静态链接,动态链接:如果可执行文件只是包含了文件名,让载入器在运行时能够寻找到所需要的函数库,我们称之为动态链接----------------------------------------------------------------------------------动态链接的优点:动态链接的优点是可执行文件的体积可以非常小,虽然运行速度稍微慢一些,但动态 阅读全文
posted @ 2012-03-22 19:53 foreverlearn 阅读(136) 评论(0) 推荐(0)
摘要:第6章:运行时的数据结构BSS段是“Block Started by Symbol(由符号开始的块)”。BSS只保存没有值的变量,运行时所需要的BSS段的大小记录在目标文件中,但BSS并不占据目标文件的任何空间。c程序的存储空间布局:说明:正文段:由CPU执行的机器指令部份,通常是正文段可以共享的且通常是只读的,以防止程序由于意外而修改其自身指令。初始化数据段:通常被称为数据段,包含了程序中需明确地赋初值的变量。非初始化数据段(bss block started by symbol):程序开始前,内核将此段中的数据初始化为0或空指针。如以下声明:longsum[100];将会被放于非初始化数据 阅读全文
posted @ 2012-03-22 08:49 foreverlearn 阅读(186) 评论(0) 推荐(0)
摘要:转自:http://www.chinaunix.net/jh/23/25356.html题目:已知strcpy函数的原型是:char*strcpy(char*strDest,constchar*strSrc);1.不调用库函数,实现strcpy函数。2.解释为什么要返回char*。解说:1.strcpy的实现代码char * strcpy(char * strDest,const char * strSrc) { if ((strDest==NULL)||(strSrc==NULL)) //[1] throw "Invalid argument(... 阅读全文
posted @ 2012-03-20 09:45 foreverlearn 阅读(176) 评论(0) 推荐(0)
摘要:转自:http://www.ezloo.com/2008/10/stored_procedure.html存储过程(Stored Procedure)存储过程就是已经编译好的、优化过的放在数据库服务器中的一些SQL语句;可供应用程序直接调用。使用存储过程有以下几个优点:1、执行速度比普通的SQL语句快 再运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。 由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。2、便于集中控制当企业规则变化时,只需要在数据库的服务器中修改相应的存储过程,而不需要逐个的在应用 阅读全文
posted @ 2012-03-19 09:39 foreverlearn 阅读(146) 评论(0) 推荐(0)
摘要:转自http://soft.yesky.com/lesson/110/2381610.shtml踏入C++中的雷区——C++内存管理详解2006-04-25 09:22作者:蒋涛出处:计算机教学网责任编辑:方舟 伟大的Bill Gates 曾经失言: 640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 1、内存分配方式 内存分配... 阅读全文
posted @ 2012-03-16 10:54 foreverlearn 阅读(163) 评论(0) 推荐(0)
摘要:--------------------------------------------------------------------------------------------------------------------------------------------------网上看到的两篇关于堆与栈的介绍,讲的比较清楚。1堆和栈的区别原地址:http://blog.csdn.net/goingup/archive/2006/03/07/618309.aspx在bbs上,堆与栈的区分问题,似乎是一个永恒的话题,由此可见,初学者对此往往是混淆不清的,所以我决定拿他第一个开刀。 首先 阅读全文
posted @ 2012-03-15 09:51 foreverlearn 阅读(125) 评论(0) 推荐(0)
摘要:一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的 全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另 一块区域。 - 程序结束后由系统释放。 4、文字常量区 —常量字符 阅读全文
posted @ 2012-03-15 09:40 foreverlearn 阅读(101) 评论(0) 推荐(0)
摘要:STL里的位标识类,<bitset>STL bitset是一个STL类,用于处理以位和位标志表示的信息,std::bitset不是STL容器类,因为它不能调整长度,也不具备容器的其他特征(见容器特征),如通过迭代器进行访问。这是一个实用类,针对处理长度在编译阶段已知的位序列进行了优化。示例:#include <iostream> #include <bitset> #include <string> int main() { bitset<8> eightBits; cout<<"The initial cont 阅读全文
posted @ 2012-03-10 13:41 foreverlearn 阅读(157) 评论(0) 推荐(0)