文章分类 - c++相关
摘要:按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。另,负数按补码形式参加按位与运算。“与运算”的特殊用途:(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。(2)取一个数中指定位方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行
阅读全文
摘要:1在一个字符串中找到第一个只出现一次的字符,如输入abac,则输出b。2输出字符串的所有组合,如"abc"输出a、b、c、ab、ac、bc、abc。3根据条件找出两个数。4求数组(或环状数组)的最大连续(或不连续)子序列和。1在一个字符串中找到第一个只出现一次的字符,如输入abac,则输出b。本题看似很简单,开个长度为256的表,对每个字符hash计数就可以了,但很多人写的代码都存在bug,可能会发生越界访问。这是C/C++语言上的一个陷阱,C/C++中的char有三种类型:char、signed char和unsigned char。char类型的符号是由编译器指定的,一
阅读全文
摘要:1求二叉树中相距最远的两个节点之间的距离2判断二叉树是否平衡二叉树3指定二叉树,给定两节点求其最近共同父节点4二叉树的广度遍历、逐层打印二叉树节点数据、只打印某层节点数据5在二叉树中找出和(叶子到根节点路径上的所有节点的数据和)为指定值的所有路径。6将二叉查找树转为有序的双链表7求二叉树的镜像8二叉树前序、中序、后序遍历的非递归实现9计算二叉树高度的非递归实现10连接二叉树同一层上的结点特别说明:本文中二叉树结构定义为:structNode{Node*left;Node*right;intdata;};定义:空二叉树的高度为-1,只有根节点的二叉树高度为0,根节点在0层,深度为0。1求二叉树中
阅读全文
摘要:C++的冒泡排序是经典的算法之一 核心思想就是一遍遍的把最大的那个数放到最下面 然后在循环放 像冒泡泡一样的比较下面的例子使用了个函数指针来定义函数,这样可以先定义函数的风格,然后再定义函数:代码如下:[c-sharp]view plaincopy#include<iostream>usingnamespacestd;typedefint(*CompareFunc)(inta,intb);//声明一个函数指针voidBubbleSort(int*ptr,intlength,CompareFuncfunc);//排序函数套用函数指针intcompare(int,int);//声明比较
阅读全文
摘要:快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。算法过程:设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。一趟快速排序的算法是: 1)设置两个变量I、J,排序开始的时候:I=1,J=N-1; 2)以第一个数组元素作为关键数据,赋值给X,..
阅读全文
摘要:代码的注释还是很清晰的,就不说废话了。直接上代码:[cpp]view plaincopy#pragmaonce#include<assert.h>#include<iostream>usingstd::cout;usingstd::endl;//单链表模板类template<classT>classCList{public://类方法接口enum{begin=0,end=-1};typedefstruct_LIST{_LIST*pNext;//指向下一个元素Tdata;//数据域}LIST,*PLIST;explicitCList(constTs[],con
阅读全文
摘要:转http://blog.csdn.net/mindva/article/details/3049338Better Encapsulation for the Curiously Recurring Template Pattern使用CRTP做更好的封装长久以来,C++一直突出于优秀的技巧和典范。老有名气的一个就是James Coplien在1995年提出的奇异递归模板模式(CRTP)。自那以后,CRTP便开始流行并在多个库中使用,尤其是Boost。例如,你可以在Boost.Iterator,Boost.Python或者Boost.Serialization库中看到他们。在这篇文章中,我假
阅读全文
摘要:独立博客链接:http://www.keepsimply.org/2012/08/18/deep-explore-c-va-arg/作者:独酌逸醉时间:2012.08.18 一、基础部分1.1 什么是可变长参数可变长参数:顾名思义,就是函数的参数长度(数量)是可变的。比如 C 语言的 printf 系列的(格式化输入输出等)函数,都是参数可变的。下面是 printf 函数的声明:int printf ( const char * format, ... );可变参数函数声明方式都是类似的。1.2 如何实现C语言可变参数通过三个宏(va_start、va_end、va_arg)和一个类型(va_
阅读全文
摘要:作为四个内部类型转换操作符之一的dynamic_cast和传统的C风格的强制类型转换有着巨大的差别。除了dynamic_cast以外的转换,其行为的都是在编译期就得以确定的,转换是否成功,并不依赖被转换的对象。而dynamic_cast则不然。在这里,不再讨论其他三种转换和C风格的转换。首先,dynamic_cast依赖于RTTI信息,其次,在转换时,dynamic_cast会检查转换的source对象是否真的可以转换成target类型,这种检查不是语法上的,而是真实情况的检查。先看RTTI相关部分,通常,许多编译器都是通过vtable找到对象的RTTI信息的,这也就意味着,如果基类没有虚方法
阅读全文
摘要:原文http://www.cppblog.com/yuanyajie/archive/2006/12/15/16489.html1.Do you Smart Pointer? Smart Pointer,中文名:智能指针, 舶来品? 不可否认,资源泄露(resource leak)曾经是C++程序的一大噩梦.垃圾回收 机制(Garbage Collection)一时颇受注目.然而垃圾自动回收机制并不能 满足内存管理的即时性和可视性,往往使高傲的程序设计者感到不自在. 况且,C++实现没有引入这种机制.在探索中,C++程序员创造了锋利的 "Smart Pointer".一定程
阅读全文
摘要:原文地址http://www.cnblogs.com/ComputerG/archive/2012/03/15/2398383.html 重载操作符是个好青年,但是要吐槽的是,我们时常为了重载操作符编写许多重复的代码。这是枯燥的,但是也是必须的。你重载的越多,你的类的弹性就越大。但是,你也不能为所欲为。玩游戏总是遵守相应的规则,写重载操作符亦是如此! 以下是要遵守的游戏规则:一元操作符可以是不带参数的成员函数或带一个参数的非成员函数。二元操作符可以是带一个参数的成员函数或带两个参数的非成员函数。operator=、operator[]、operator()、operator->只能定义为
阅读全文
摘要:1.调用格式为 printf("<格式化字符串>", <参量表>); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符,用来确定输出内容格式。参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出参数个数一样多, 各参数之间用","分开, 且顺序一一对应, 否则将会出现意想不到的错误。2.格式化字符%d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 %s 字符串 %c 单个字符 %p 指针的值
阅读全文
摘要:学习《《深入探索c++对象模型》》的一些心得。
阅读全文
摘要:本文同步利用代码来说明博主继承,多态学习中常见的一些问题。父类指针能实例化子类但却不能调用子类独有的方法代码举例#include<iostream>using namespace std;class Base{public: void func(){ cout <<"Base::func(int i)"<< endl; } virtual void func2() { cout << "Base::func2(int i)" << endl;}}; class Derived : public
阅读全文
摘要:转自:http://www.cnblogs.com/oiramario/archive/2006/11/13/559130.htmllevel 1从<<essential c++>>开始,短小精悍,可以对c++能进一步了解其特性以<<c++ primer>>作字典和课外读物,因为太厚不可能一口气看完level 2然后从<<effective c++>>开始转职,这是圣经,请遵守10诫,要经常看,没事就拿来翻翻接着是<<exceptional c++>>,个人认为Herb Sutter主席大人的语言表
阅读全文
摘要:编程珠玑之指针和数组(4)--《c语言深度剖析》整理 分类: c语言 2011-08-12 00:22 58人阅读 评论(0) 收藏 举报 指针是c/c++ 精华,没有很好的掌握指针,基本是没有掌握c/c++,对c/c++ 也是一知半解,往往指针掌握不好,也不能很好的理解数组和内存管理一、指针在系统同占用的空间 在32位系统中,指针所占空间的大小为 4个字节,与指针指向的数据类型无关; 比如 int *p; char *p; double *p; int **p; 已经执行构造类型的结构体的(比如指向 结构体,联合体等的指针)大小均为4个字节int *p; 表示内存中分配四个字节的内存空间,并
阅读全文

浙公网安备 33010602011771号