摘要: 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 阅读(135) 评论(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 阅读(263) 评论(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 阅读(203) 评论(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 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 死锁:死锁的产生需要一定的条件:要有一个或者多个执行线程和一个或者多个资源,每个线程都在等待其中一个资源,但所有的资源都已经别占用了,所有的线程都在相互等待,但他们永远不会释放已经占有的资源,于是任何线程都无法继续,这便意味着死锁的发生死锁产生的条件:1:资源不能被共享,只能由一个进程使用2:请求与保持条件(Hold and wait)已经得到资源的进程可以再次申请新的资源3:非剥夺条件(No Pre-emption)已经分配的资源不能被剥夺4:循环等待(Circular Wait):系统中若干进程组成环路,该环路中的每个进程都在等待相邻进程使用的资源大部分内容取自:http://www.ib 阅读全文
posted @ 2012-03-26 10:22 foreverlearn 阅读(114) 评论(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 阅读(607) 评论(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 阅读(168) 评论(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 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 第五章:对链接的思考动态链接允许系统提供一个庞大的函数库集合,可以提供多种有用的服务,但是程序将在运行时寻找他们,而不是把这些函数库的二进制代码作为自身可执行文件的一部分静态链接:如果函数库的一份拷贝是可执行文件的物理组成部分,称之为静态链接,动态链接:如果可执行文件只是包含了文件名,让载入器在运行时能够寻找到所需要的函数库,我们称之为动态链接----------------------------------------------------------------------------------动态链接的优点:动态链接的优点是可执行文件的体积可以非常小,虽然运行速度稍微慢一些,但动态 阅读全文
posted @ 2012-03-22 19:53 foreverlearn 阅读(129) 评论(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 阅读(173) 评论(0) 推荐(0) 编辑