文章分类 -  【004】C / C++

摘要:原文:http://www.blogjava.net/bacoo/archive/2009/06/22/283480.html对模板特化的理解:特化整体上分为全特化和偏特化,这一点大家都没有什么置疑,但是细分它们各包括哪几种状态就很难界定了,而且很多权威的书上都不一致,管它呢,反正我们能会用各种特化就可以了。下面就谈谈我个人对特化的划分和定义:所谓特化,就是将泛型的东东搞得具体化一些,从字面上来解释,就是为已有的模板参数进行一些使其特殊化的指定,使得以前不受任何约束的模板参数,或受到特定的修饰(例如const或者摇身一变成为了指针之类的东东,甚至是经过别的模板类包装之后的模板类型)或完全被指定 阅读全文
posted @ 2013-06-06 20:05 xiaolongxia 阅读(205) 评论(0) 推荐(0)
摘要:类别:技术文章来源:未知作者:未知关键字:auto_ptr加入日期:2003-8-15文章地址:http://www.ec66.com/article/list.asp?indexid=1687由一份auto_ptr源代码所引发的思考如果我问你,auto_ptr最关键的地方,或者说它与一般指针最不一样的地方在哪里,你一定会说它是一个对象,它与自己所占有的资源密切相关,当自己消亡的时候,它也会将自己所拥有的资源一同释放。很好,它之所以会拥有这一特性,全都要归于析构函数的功劳,在析构函数中,它会进行善后处理,这样也就很好的避免了资源泄漏。当然,引入auto_ptr的原因还不至于这么简单,因为许多资 阅读全文
posted @ 2013-05-30 09:58 xiaolongxia 阅读(110) 评论(0) 推荐(0)
摘要:一、1、std::auto_ptr(其实是模板类)不用的时候 自动释放 std::auto_ptr<Base> a1(new Child);2、std::tr1::shared_ptr 根据引用计数来释放 std::tr1::shared_ptr<Base> a2(new child); // 指针类型为 tr1::shared_ptr<Base> 的对象两者的特点:都可以可以通过a1.get()获得原始指针(复件)这两个都重载了指针取值操作符(operator-> 和 operator*)二、new delete成对出现为了减少在new 的时候用了[ 阅读全文
posted @ 2013-05-29 21:49 xiaolongxia 阅读(75) 评论(0) 推荐(0)
摘要:原文:http://hi.baidu.com/wy_51131/item/c63507be3166ca402aebe3bd如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和 阅读全文
posted @ 2013-05-13 16:36 xiaolongxia 阅读(535) 评论(0) 推荐(0)
摘要:// radomtest.cpp : Defines the entry point for the console application.//#include <math.h>#include <stdlib.h>#include <memory.h>#include <vector>#include <time.h>using namespace std;#define LENGTH 100;int* random_number(int minValue,int maxValue,int length);int main(int 阅读全文
posted @ 2013-01-12 16:01 xiaolongxia 阅读(111) 评论(0) 推荐(0)
摘要:1 int a[10];2 int *p = a;3 int (*q)[10] = &a;第二个为指向数组的指针.a只是a[0]的地址,a+1就是a[1]的地址了,&a是整个a[10]的首地址,是以整个数组为角度来看,虽然它与a[0]的值相同,但是&a+1就已经增加了10个int类型的字节的长度了. 1 #include <stdio.h> 2 3 int a[2] = {1,2}; 4 int main(){ 5 printf("a = %p\n", a); // I 6 printf("&a = %p\n" 阅读全文
posted @ 2012-11-03 16:17 xiaolongxia 阅读(18072) 评论(1) 推荐(1)
摘要:原文:http://baike.baidu.com/view/1516611.htmclock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下: clock_t clock(void) ; 这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对它的定义:1 #ifndef _CLOCK_T_DEFINED.. 阅读全文
posted @ 2012-10-08 09:43 xiaolongxia 阅读(351) 评论(0) 推荐(0)
摘要:版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://dalu.blogbus.com/logs/37977984.html 由于一个合数总是可以分解成若干个质数的乘积,那么如果把质数(最初只知道2是质数)的倍数都去掉,那么剩下的就是质数了。 例如要查找100以内的质数,首先2是质数,把2的倍数去掉;此时3没有被去掉,可认为是质数,所以把3的倍数去掉;再到5,再到7,7之后呢,因为8,9,10刚才都被去掉了,而100以内的任意合数肯定都有一个因子小于10(100的开方),所以,去掉,2,3,5,7的倍数后剩下的都是质数了。 用程序可以这样解决,引入布尔类型数... 阅读全文
posted @ 2012-09-21 10:11 xiaolongxia 阅读(248) 评论(0) 推荐(0)
摘要:1 #include<stdio.h>2 3 int i=1;4 int main()5 {6 int i=i;7 printf("%d\n",i);8 return 0;9 }结果: 阅读全文
posted @ 2012-09-20 21:36 xiaolongxia 阅读(750) 评论(0) 推荐(0)
摘要:1、子字串查找,返回找到的地址,否为返回NULL 1 char *strstr(const char *s1, const char *s2) 2 { 3 size_t l1, l2; 4 5 l2 = strlen(s2); 6 if (!l2) 7 return (char *)s1; 8 l1 = strlen(s1); 9 while (l1 >= l2) 10 {11 l1--;12 if (!memcmp(s1, s2, l2))13 return (char ... 阅读全文
posted @ 2012-09-18 10:05 xiaolongxia 阅读(150) 评论(0) 推荐(0)
摘要:原文:http://blog.csdn.net/welcome_ck/article/details/2279641、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。3、cons有什么主要的作用?(1)可以定义const常量,具有不可变性。例如: const int Max=100; int Array[Max]; (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如:. 阅读全文
posted @ 2012-09-17 11:04 xiaolongxia 阅读(189) 评论(0) 推荐(0)
摘要:一、函数的声明 只是函数头,放在主函数前面二、函数体 函数头,函数体,可以放在主函数前面,也可以是后面,但是不能放在主函数体内。函数的定义不能嵌套 阅读全文
posted @ 2012-09-16 10:46 xiaolongxia 阅读(286) 评论(0) 推荐(0)
摘要:一、static1、函数中,修饰变量,表示静态变量;2、源文件中修饰函数、变量,表示该函数、变量不被此文件以外的地方引用;3、类成员中,修饰函数、变量,表示类的方法、变量,不用创建实例通过类名便可使用;二、const1、定义常量2、const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 阅读全文
posted @ 2012-09-16 10:43 xiaolongxia 阅读(101) 评论(0) 推荐(0)
摘要:原文:http://patmusing.blog.163.com/blog/static/135834960201001512358686/对于一个完整的程序,在内存中分布情况如下图:值得一提的是:在C#中struct存放在栈区,class存放在堆区,所以一般struct要比class要快的。堆和栈的比较表(仅针对C++)栈(Stack)堆(Heap)申请方式由OS自动分配。例如在函数声明一个局部变量int b; OS自动在栈中为b开辟空间需要程序员自己申请,并指明大小,在c中malloc函数,如p1 = (char*)malloc(10); 在C++中用new运算符如p2 = new cha 阅读全文
posted @ 2012-09-16 09:50 xiaolongxia 阅读(197) 评论(0) 推荐(0)
摘要:原文:http://www.cppblog.com/twzheng/articles/21020.html 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。友元函数 : 友元函数是可以直接访问类的私有成. 阅读全文
posted @ 2012-09-16 09:46 xiaolongxia 阅读(121) 评论(0) 推荐(0)
摘要:1.gets()函数问:请找出下面代码里的问题:#include<stdio.h>intmain(void){charbuff[10];memset(buff,0,sizeof(buff));gets(buff);printf("\nThebufferenteredis[%s]\n",buff);return0;}答:上面代码里的问题在于函数gets()的使用,这个函数从stdin接收一个字符串而不检查它所复制的缓存的容积,这可能会导致缓存溢出。这里推荐使用标准函数fgets()代替。2.strcpy()函数问:下面是一个简单的密码保护功能,你能在不知道密码的情 阅读全文
posted @ 2012-09-08 16:09 xiaolongxia 阅读(135) 评论(0) 推荐(0)
摘要:原文:http://www.cnblogs.com/laojie4321/archive/2012/03/31/2426910.htmlexit函数在头文件stdlib.h中。exit(0):正常运行程序并退出程序;exit(1):非正常运行导致退出程序;return():返回函数,若在main主函数中,则会退出函数并返回一值,可以写为return(0),或return 0。详细说:1. return返回函数值,是关键字;exit是一个函数。2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。3. return是函数的退出(返回);exi 阅读全文
posted @ 2012-09-08 15:44 xiaolongxia 阅读(181) 评论(0) 推荐(0)
摘要:原文:http://blog.sina.com.cn/s/blog_5cec5bad0100b0x2.html一、exit()函数函数声明:void exit(int state);exit()函数用于在程序运行的过程中随时结束程序,exit的参数state是返回给操作系统,返回0表示程序正常结束,非0表示程序非正常结束。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作(return 关键字也会调用atexit函数),同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文 阅读全文
posted @ 2012-09-08 15:33 xiaolongxia 阅读(192) 评论(0) 推荐(0)
摘要:error LNK2001: unresolved external symbol "public:类模板中成员函数的定义一般与声明放到同样的头文件中!!!! 阅读全文
posted @ 2012-09-07 20:11 xiaolongxia 阅读(205) 评论(0) 推荐(0)
摘要:一、尽量不用erase()函数!!!原因:先看一段代码: 1 #include <iostream> 2 #include<vector> 3 4 using namespace std; 5 6 int main() 7 { 8 int i; 9 vector<int> arr;10 vector<int>::iterator it;11 12 for (i=0 ; i<5 ;++i)13 { 14 arr.push_back(i+1);15 }16 17 for (it = arr.b... 阅读全文
posted @ 2012-08-26 16:23 xiaolongxia 阅读(297) 评论(0) 推荐(0)