
c/c++
文章平均质量分 62
young-hz
人生好比一场70年代的拳击比赛,充满了躲闪与出拳,如果足够幸运,只需一次机会一个重拳而已。但首要条件是,你必须顽强地站着,挺住意味着一切。
展开
-
智能指针tr1::shared_ptr、boost::shared_ptr使用
对于tr1::shared_ptr在安装vs同时会自带安装,但是版本较低的不存在。而boost作为tr1的实现品,包含“AlgorithmsBroken Compiler WorkaroundsConcurrent ProgrammingContainersCorrectness and TestingData StructuresDomain SpecificFu原创 2014-07-19 17:57:29 · 4970 阅读 · 1 评论 -
为什么C++编译器不能支持对模板的分离式编译
转自:首先,一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件(假定我们的平台是win32),后者拥有PE(Portable Executable,即windows可执行文件)文件格式,并且本身包含的就已经是二进制码,但是不一定能够执行,因转载 2014-07-15 14:45:19 · 3774 阅读 · 0 评论 -
C++中的虚函数(virtual function)
关于虚函数与多态,看书时总以为自己懂了,转载 2014-06-07 09:54:02 · 3539 阅读 · 0 评论 -
说不出SDK和IDE区别?进来吧兄弟
突然想起来这个东西,为了以后吹牛不漏破绽,来吧原创 2014-04-13 21:13:51 · 19066 阅读 · 0 评论 -
c++ hash_map 详细介绍
为什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山派掌门人,人称君子剑 张三丰-武当掌门人,太极拳创始人 东方不败-第一高手,葵花宝典 ... 这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的转载 2014-04-13 20:05:31 · 3108 阅读 · 0 评论 -
C++ 中标准库 map 和 hash_map 的使用方法
STL map常用操作简介1。目录map简介map的功能使用map在map中插入元素查找并获取map中的元素从map中删除元素2。map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。3。map的功能自动建立Key - value的对应。转载 2014-04-13 20:03:59 · 9017 阅读 · 0 评论 -
字符数组与字符串,字符数组与字符指针(总结大全)
1.误区:字符数组就是字符串原创 2014-04-06 12:10:22 · 3285 阅读 · 0 评论 -
关于free和指针你可能没想到的...
先看例子1#include void test(){ char *tmp = (char*)malloc(100); strcpy(tmp, "Hello"); free(tmp); //try to access tmp //由于并没有使用free的内存,所以内存中的数据并没有发生变化 if(tmp != NULL) {原创 2014-04-05 23:31:18 · 4053 阅读 · 1 评论 -
野,野,野,野指针
野指针,也就是指向不可用内存区域的指针。通常对这种指针进行操作的话,将会使程序发生不可预知的错误。 “野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。野指针的成因主要有两种: 一、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一转载 2014-04-05 22:40:33 · 3111 阅读 · 0 评论 -
整型与字符型相加
想通过整型与字符型相加的到正确的整型数值,,见下面的程序:#include void main(){ int a = 2; char c = '3'; int b = a+c; printf("int + char = %d\n",b);}输出:int + char = 535原创 2014-03-19 22:46:37 · 15998 阅读 · 3 评论 -
各类数值型数据间如何混合运算?
整型(包括int,short,long)、实型(包括float,double)可以混合运算。前已述及,字符型数据可以与整型通用,因此,整型、实型、字符型数据间可以混合运算。例如:10+'a'+1.5-8765.1234 *'b'是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则按图3.10所示。图3.10图中横向向左的箭头表示必定的转换,如字符数转载 2014-03-19 22:40:15 · 8778 阅读 · 1 评论 -
你可能不知道的:for(;;) and while(1) 分析比较
作用相同,特点比较:1、可读性:for中什么都不写,当然就是无条件执行循环。而while(1)就显得莫名其妙。此处来看,for更胜一筹。2、效率:在没有充分优化的编译器上一定是for的效率更高。3、代码风格:while(1)又额外引入了一个常量。原创 2014-03-17 11:51:45 · 3225 阅读 · 0 评论 -
sizeof and strlen
自己思考:#include #include int main(){ char array[6] = "Hello"; char *p = array; printf("The result of sizeof is %d\n\n", sizeof(array) ); printf("The result of stringlen is %d\n", strlen(arr原创 2014-03-15 19:56:52 · 3138 阅读 · 0 评论 -
太基础的数据类型大小
几种常见的数据类型可以划分数值类(整型、浮点型),字符类,当然各种数据类的字长一般与机器字长相关联。 1、char: 8位,一个字节2、 float, double float, long double: float通常一个机器字长(32位),double是两个机器字长(64位),long double是三个或四个字长,有时也会市两个机器字长(64位)。3、原创 2014-03-15 11:25:03 · 3149 阅读 · 0 评论 -
C++堆、栈、自由存储区、全局/静态存储区和常量存储区
一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量转载 2014-03-13 11:10:16 · 3332 阅读 · 0 评论 -
C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)
BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。 数据段:数据段(data segment)通常是指用来存放程序中 已初始化 的 全局变量 的一块内存区域。数据段属于静态内存分配。代码段:代码段(code segment/t转载 2014-03-13 11:09:13 · 3340 阅读 · 0 评论 -
Linux下C++的man安装及使用方法
1. 安装C++的帮助手册一般的Linux发行版不会默认安装C++的帮助手册,安装方法如下:点击这里 站点, 或者其他的可用站点,我下载文件的是libstdc++-api.20130310.man.tar.bz2,当然,您或者可下载其他版本。解压方式:tar jxvf libstdc++-api.20130310.man.tar.bz2。注意:如果是.bz2结尾的压缩文件转载 2014-01-10 21:10:09 · 4700 阅读 · 0 评论 -
static_cast 与reinterpret_cast
static_cast用法:static_cast ( expression )该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法: ①用于类层次结构中基类和子类之间指针或引用的转换。 进行上行转换(把子类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转换成转载 2014-01-10 21:08:50 · 3468 阅读 · 0 评论 -
C++用new和不用new创建类对象区别
起初刚学C++时,很不习惯用new,后来看老外的程序,发现几乎都是使用new,想一想区别也不是太大,但是在大一点的项目设计中,有时候不使用new的确会带来很多问题。当然这都是跟new的用法有关的。new创建类对象,使用完后需使用delete删除,跟申请内存类似。所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似乎更加高转载 2013-11-10 08:25:26 · 4381 阅读 · 0 评论 -
带<.h>和不带<.h>的头文件的区别
带和不带的头文件的区别2008-03-05 22:25#include #include using namespace std;在以上边的方式定义了头文件后,如果在程序中创建如:ofstream file对象的时候编译是会产生如下错误:'ofstream':ambiguous symbol这是二义性错误以下是正确用法和区别:现在转载 2013-10-31 20:21:52 · 7970 阅读 · 0 评论 -
static and &.&&用途使用小例
static的作用:一:存在内存的静态区,表示退出一个块后仍然存在的局部变量。第二个作用:修饰函数。函数前加static 使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函数)。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。1、int i原创 2013-10-28 22:55:22 · 4681 阅读 · 0 评论 -
桶式排序
桶式排序:如果我们有N个整数,范围从1到M(或从0到M-1),我们可以利用这个信息得到一种快速的排序,叫做桶式排序(bucket sort)。我们留置一个数组,称之为Count,大小为M,并初始化为零。于是,Count有M个单元(或桶),开始时他们都是空的。当数组元素A[i]被读入时Count[A[i]]增1。在所有的输入被读进以后,扫描数组Count,打印输出排好序的表。该算法花费O原创 2013-10-25 22:38:42 · 5789 阅读 · 0 评论