自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (3)
  • 收藏
  • 关注

转载 C/C++内存泄露检测工具 valgrind

具体内容查看:本文的链接:http://www.ibm.com/developerworks/cn/linux/l-cn-valgrind/#iratingsValgrind官方网站:http://www.valgrind.org/内存调试技巧: http://www.ibm.com/developerworks/cn/aix/library/au-memo

2013-04-09 14:49:30 1297

转载 fork_子进程会复制父进程的缓存空间

前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:题目:请问下面的程序一共输出多少个“-”?#include #include #include int main(void){ int i; for(i=0; i<2; i++){ fo

2013-04-08 18:57:39 3991 1

转载 C++ 编写自己的异常处理

摘要:如何写一个异常处理类是一个不太容易的事情,最近刚好接触了一些不错的代码,看到了一些技巧,这里和大家分享一下。  我们的异常处理类的features  如何写一个异常处理类是一个不太容易的事情,最近刚好接触了一些不错的代码,看到了一些技巧,这里和大家分享一下。  一个相对完善的异常处理类(以及附加的一些东西)应该能够处理下面的一些功能:  1) 能够方便的定义异常类

2013-03-04 17:28:18 1125

转载 auto_ptr、shared_ptr、weak_ptr、scoped_ptr用法小结

auto_ptr auto_ptr是现在标准库里面一个轻量级的智能指针的实现,存在于头文件 memory中,之所以说它是轻量级,是因为它只有一个成员变量(拥有对象的指针),相关的调用开销也非常小。 下面的代码来自于VC++ 8.0里面的源码:  里面有个auto_ptr_ref的数据结构,我们可以把它忽略,这个只是内部使用的代理结构,用于一些隐式的const变化

2013-01-14 09:05:10 14086

转载 C++四种强制类型转换

TYPE b = (TYPE)a  C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。  const_cast,字面上理解就是去const属性。  static_cast,命名上理解是静态类型转换。如int转换成char。  dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。  reinterpreter

2013-01-03 16:04:28 847

原创 C++ 虚函数 虚继承 纯虚函数 之 一二三

虚函数是为了实现多态性:允许使用统一的接口去访问不同子类的函数。class A{ public: A(){} virtual void print() { cout<<"I am A"<<endl; }};class B:public A{ public:

2013-01-03 12:59:02 2755

原创 c++类大小(涵盖继承 虚继承 虚函数表)

涉及到c++中求类大小时需要特别注意一下几点1.为类的非静态成员数据的类型大小之和.2.有编译器额外加入的成员变量的大小,用来支持语言的某些特性(如:指向虚函数的指针、虚继承、多重继承).3.为了优化存取效率,进行的边缘调整.4.  与类中的构造函数,析构函数以及其他的成员函数无关. 5.  私有继承,会去继承之前的私有成员变量么? 会...在内存中仍然分配

2013-01-01 12:37:02 3240 3

原创 linux 对目录读权限和执行权限的区别

在linux中,对目录的读权限和执行权限的意义是不同的。读权限允许我们读目录,获得在该目录中所有文件名的列表。当一个目录是我们要访问的文件的路径名中的一个组成部分时,对该目录的执行权限允许我们搜索该目录,寻找一个特定的文件名。

2012-12-19 09:55:42 858

转载 C和C++中存储区域详解(栈、堆、全局...)

一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。- 程序结束释放

2012-12-18 14:48:32 7676

转载 c++ extern 攻略

当你想在另外的模块中(b)使用本模块(a)定义的全局变量,你应该想到extern关键字:在本模块的头文件中加上如下语句: extern int c;(定义仍然在模块a的.cpp文件中不变),然后在b模块中加上include "a.h"或者是 你在b模块中也加上extern int c;语句,这样的话在b模块中找不到的定义,自然会去其他的模块中查找定义。1 基本解释:extern可以

2012-12-17 19:56:31 594

转载 float和double的精度以及在计算机中的表示

转自:http://hi.baidu.com/bebeq/item/8589e29b63dc9adb7b7f01a6float与double的范围和精度1 范围float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:float:1bit(符号位)8bits(指数位)

2012-11-07 19:09:53 9441 1

原创 Linux 标准IO带缓冲 ,read,write函数不带缓冲

在Linux中,函数open、read、write、lseek以及close提供了不带缓冲的I/Oint n =read(STDIN_FILENO,buf,BUFSIZE)但是标准IO函数提供了一种对不带缓冲I/O函数的带缓冲的接口:c=getc(stdin) #使用的是系统自身的缓冲空间

2012-11-07 16:40:34 1929

转载 c 位域

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://yangwei.blogbus.com/logs/1550489.html位域有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位

2012-11-06 15:48:06 556

原创 打印双字节型慎用wcout

Windows下在涉及到双字节型的输出问题上慎用wcout,特别是在codeblocks中和linux中使用的是gcc编译器的。我们一般可以使用c中的wprintf来打印双字节型,已在codeblocks中试验过,同时需要更改一个参数:setting——compiler and dubug—— other options,添加-finput-charset=GBK,之后在codeblocks中就可

2012-09-10 14:21:57 2155

原创 c++转义字符

c++中有很多转义字符:\b表示的是回退,比如cout\r表示的是回车,它是将光标移动到该行的罪前面。这要追溯到打字机时代,那个时候打字机要跳转到下一行,必须先返回到该行的头部,然后将纸张上推一行,所以\r回车还是沿用了之前的定义,直接将光标移动到该行的头部。

2012-09-10 11:16:17 1627

原创 C++中的多态性

c++中的多态性可以有两种表现形式:面向对象编程中的多态性:(继承关系中的多态性)在继承关系中的基类中指定某函数为虚函数(virtual),接着在函数调用中使用基类的引用或者指针作为形参,如果在调用该函数时,实参是继承类的对象,那么我们调用继承类中该虚函数的实现;如果实参是基类的对象,那么我们调用的是基类中该虚函数的实现。这也称为动态绑定。泛型编程中的多态性:使用模板我们可以让一个类或

2012-09-06 14:39:01 461

原创 类类型转换

类类型转换操作符是一种特殊的类成员函数,它定义将类类型值转变为其他类型值的转换。转换函数采用如下形式:operator type();比如我们希望将我们编写的类型转换成int型,可以定义如下成员函数operator int();比较奇怪的是转换函数没有返回类型,但是它又确确实实会返回一个int型的数值。这是定义的显示的类型转换,可以回忆一下之前提到过的类型的隐式转换。

2012-09-04 21:15:27 509

原创 隐式类类型转换以及explicit

先有如下构造函数版本:class Sales_item{public:Sales_item(const std::string &book): isbn(book),units_sold(0),revenue(0.0){}Sales_item(std::istream &is);}原本的成员函数same_isbn()接收一个Sales_item对象作为实参,判断两个对象是否

2012-09-03 09:08:54 445

原创 类中的可变数据成员(mutable)

从前面我们知道,在const成员函数内,我们不能对对象的数据(无论是公有的还是私有的)进行修改。但是我们又想去修改其中的一个数据。一种可行的方案是将该数据成员定义成可变数据成员(使用关键字mutable)看如下的例子:class Screen{public: private: mutable size_t access_ctr;     };void Screen::do_disp

2012-09-02 21:11:55 1105

原创 类声明和定义中const、inline、默认参数、explicit、static、virtual的出现频率

在类申明中,在形参表之后添加关键字const,使成员函数变成常量(我们可以理解为将this指定指定为常量),如此便不能通过成员函数来修改对象的数据成员,无论是共有的还是私有的。例如double avg_price() const;该函数avg_price()不能更改对象的任何数据成员。需要强调一点的是:const关键字必须同时出现在类的申明和定义中,若只出现一次,将会报错。如果类的成员函数带有

2012-09-02 20:42:39 2928

原创 在编写构造函数时建议使用构造函数初始化列表

c++中构造函数初始化式有两种方式:使用构造函数初始化列表进行初始化 省略初始化列表并在构造函数体内对数据成员进行赋值达到初始化的目的除了两个例外,对非类类型的数据成员进行赋值或者使用初始化列表进行初始化在性能和结果上都是等价的。例如:class ConstRef{public : ConstRef(int ii);private : int i;

2012-07-11 16:05:30 478

翻译 数据结构 —— 堆(摘自严蔚敏《数据结构》)

堆是一颗完全二叉树,并且是完全二叉树中所有非终端节点的值均不大于(或不小于)其左、右孩子节点的值。堆的性质: 第一个元素总是最大或者最小    可以在对数时间内增加或者删除一个元素若在输出堆顶元素之后,使得剩余的n-1个元素的序列又重新建成一个堆,则得到n个元素中的次小值。如此反复,边能得到一个有序序列,这个过程称之为堆排序。实现堆排序需要解决两个问题:(1)如何由一个无序序列建成一个

2012-07-10 16:23:15 1719

转载 计算下一个全排列(以STL中的next_permutation为例)

算法理解:(怎么样获得下一个全排列次序)根据标记从后往前比较相邻两数据,若前者小于(默认为小于)后者,标志前者为X1(位置PX)表示将被替换,再次重后往前搜索第一个不小于X1的数据,标记为X2。交换X1,X2,然后把[PX+1,last)标记范围置逆。完成。int main(){int a[] = {3,1,2};do{     cout }while (next_

2012-07-10 10:54:21 786

转载 STL的逆向迭代器

本文转自:http://zhouruijun163.blog.163.com/blog/static/10771562008111103635444/ 在学习STL中关于迭代器reverse_iterator转换,发现个有趣的问题,如下例子。#include iostream>#include algorithm>#include vector>

2012-07-09 15:43:06 1866

原创 vector的容量进行缩减

在c++primer 上看到vectors的容量不会进行缩减:即便是删除元素,其references、pointers、iterators也会继续有效,继续指向动作发生前的位置。但是安插操作可能使这些references、pointers、iterators失效(因为安插可能导致内存的重新分配)。有一个间接缩减vector容量的小窍门:采用swap让两个同期交换内容后,两者的容量也会互换:

2012-07-07 20:25:20 2496

原创 输出缓冲区的管理

缓冲区类型有三种:全缓冲(比如说文件),行缓冲(比如说终端),无缓冲 (比如说cerr)下面几种情况将导致缓冲区的内容被刷新,写入到真实的输出设备或者文件中去(1)程序正常结束。作为main返回工作的一部分,将清空所有输出缓冲区。(2)在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新。(3)用操纵符显示地刷新缓冲区,例如行结束符endl(4)在每

2012-07-05 10:02:45 571

原创 重载和const形参

仅当形参是引用或者指针的时候,形参是否为const才能有影响例如: Record lookup ( Phone);Record lookup ( const Phone); 这里是对同一个函数的两次申明,而不是函数重载,因为形参不是引用也不是指针,仅仅差别是const,相当于这个const在这里起不到任何作用但是 Record lookup(Account &);Record

2012-07-04 17:44:24 798

转载 c++默认实参

转自:http://blog.csdn.net/chollima/article/details/3454839最近在看关于函数的一部分,其中有这两句话很吸引我,一是:既可以在函数声明中也可以在函数定义中指定默认实参,但是在一个文件中,只能为一个形参指定默认实参一次;二是:如果在函数定义的形参表中提供默认实参,那么只有在包含该函数定义的源文件中调用该函数时,默认实参才是有效的。细细一想才明

2012-07-04 15:20:52 4606

转载 省略符形参

在c++  primer书上看到标题为“含有可变形参的函数”的章节,内容如下: 省略符形参有下列两种形式: void foo ( parm_list , ...); void foo ( ... ); 第一种形式为特定数目的形参提供了声明。在这种情况下,当函数被调用时,对于与显示声明的形参相对应的实参进行类型检查,而对于与省略符对应的实参则暂停类型检查。在第一钟形式中,

2012-07-04 10:40:32 4476 1

转载 c++primer之sizeof

使用sizeof的结果部分地依赖所涉及的类型:对char类型或值为char 类型的表达式做sizeof操作保证得到1对引用类型做sizeof操作将返回存放此引用类型对象所需要的内存空间的大小。也就是被引用的对象占用对少内存,引用就占用多少内存对指针做sizeof操作将返回存放指针所需要的内存大小,如果需要获取该指针所指向的对象的大小,则必须对该指针进行解引用。对数组做sizeof操

2012-07-03 17:00:50 715

原创 c++ struct和class的区别

在c++中用class和struct关键字定义类的唯一差别在于默认访问级别:默认情况下,struct的成员是public的,但是class的成员是private的。

2012-06-27 14:27:37 632

原创 const 引用——c++ primer 学习笔记

1.概念:const 引用指的是指向const对象的引用。2.const引用的右值可以是常数,但是普通的引用是不行的。 int &re1 = 42(x)const int &re2 = 42 (正确)3.先看一个可行的语句:double dval = 3.14;                           double dval = 3.14;const int &

2012-06-27 11:07:42 414

翻译 云本质的思考——摘至《大话云存储II》

今天在看冬瓜头的《大话云存储II》时看到它对云本质的论道,感觉特别形象生动,摘抄下来,和大家分享。既然用户最终需要的不是服务器也不是一堆一堆的硬盘也不是机房也不是整天吹冷气的空调,他们只不过想要自己的数据被展现出来,看到生产的结果并存储起来备用,就这样嘛。好吧,你不喜欢机房,也不喜欢看到一堆一堆的机柜,你不愿意看到你花很多钱购买的服务器,在系统不繁忙的时候,CPU的使用率机会等于0,磁盘IO利

2012-06-25 17:06:16 1352

原创 迭代器逆向后的移位

在《c++标准程序库》中讲述的将迭代器逆向后的移位操作,这和我们正常的思维有点出入,在程序设计过程中需要额外注意:比如有如下的程序,使用正向的迭代器pos初始化了一个反向迭代器,*pos返回的是5,按正常思维我们希望*rpos返回的也是5,但是结果*rpos返回的是4。 for(int i=1;i<=9;i++) { coll.push_back(i);

2011-12-09 09:20:45 941

原创 const指针和指向const对象的指针

1.有关const指针和指向const对象指针的一道题:首先要说明的是怎么来判断const指针还是指向const的指针:如果const后面跟的是类型,那么const是用来修饰对象的,所以它是指向const对象的指针但是如果const后面跟的是指针本身,那么const是用来修饰指针的,所以它是const指针可以这么理解,const在*号左边,那么它修饰指向const对象的指针,但是c

2011-12-01 16:26:26 481

c c++语言经典算法

里面所讲述的算法是c和c++编程中经常涉及到的算法~大家有空可以学习一下的!

2012-02-12

ChunkStash, Speeding up Inline Storage Deduplication using Flash

这是fast上的有关重删的文章..我已经作了相应的备注!

2012-02-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除