06 2012 档案

摘要:第17章 string基本字符序列容器 string常用 的函数http://www.cplusplus.com/reference/string/string/ 第18章 stack堆栈容器堆栈是一种适配器 堆栈的实现 由于C++ STL中堆栈是不预设大小的,所以在入栈的时候就不考虑堆栈空间是否为满,均将元素压入到堆栈,从而函数没有标明入栈成功与否的返回值。stack容器函数http://www.cplusplus.com/reference/stl/stack/ 第19章 queue队列容器 queue源代码 queue容器函数http://www.... 阅读全文
posted @ 2012-06-29 18:19 Mr.Rico 阅读 (260) | 评论 (0) 编辑
摘要:第3篇 C++ STL 容器技术SGI STL代码主页:http://www.sgi.com/tech/stl/ 第6章 vector向量容器 stl_vector.h源代码vector常用的函数http://www.cplusplus.com/reference/stl/vector/ 第7章 deque双端队列容器 deque容器使用http://www.cpluspl... 阅读全文
posted @ 2012-06-29 12:52 Mr.Rico 阅读 (317) | 评论 (0) 编辑
摘要:第1章 C++编程技术1.6 显示类型转换 4种显示类型转换的原型reinterpret_cast转换: const_cast转换: static_cast转换: dynamic_cast转换: 1.7 C++中的异常处理 多个try块与catch块的对应 捕捉任意类型的异常 异常类型列表,声明不抛出异常的情况违反异常类型列表抛出异常 另一种常用异常处理方法:继续抛出异常,让调用者处... 阅读全文
posted @ 2012-06-29 11:23 Mr.Rico 阅读 (798) | 评论 (0) 编辑
摘要:第5章 堆栈堆栈是一个后进先出(last-in-first-out, LIFO)的数据结构。1. 数组实现的堆栈源代码如下:View Code #include<iostream>usingnamespacestd;template<classT>classStack{public:Stack(intMaxStackSize=10);~Stack(){delete[]stack;}boolIsEmpty()const{returntop==-1;}boolIsFull()const{returntop==MaxTop;}TTop()const;Stack<T> 阅读全文
posted @ 2012-06-28 16:28 Mr.Rico 阅读 (175) | 评论 (0) 编辑
摘要:第3章 数据描述 最常见的数据描述方法有:公式化描述、链接描述、间接寻址和模拟指针。 公式化描述借助数学公式来确定元素表中的每个元素分别存储在何处(如存储器地址)。 最简单的情形就是把所有元素依次连续存储在一片连续的存储空间中,这就是通常所说的连续线性表。 在链接描述中,元素表中的每个元素可以存储在存储器的不同区域中,每个元素都包含一个指向下一个元素的指针。同样,在间接寻址方式中,元素表中的每个元素也可以存储在存储器的不同区域中,不同的是,此时必须保存一张表,该表的第 i项指向元素表中的第 i个元素,所以这张表是一个用来存储元素地址的表。 ... 阅读全文
posted @ 2012-06-28 14:55 Mr.Rico 阅读 (693) | 评论 (0) 编辑
摘要:第8章 仿函数(函数对象)第9章 STL算法9.1 非变动性算法string搜寻函数与STL搜寻算法的比较变动性算法排序算法几种排序算法的比较;第10章 特殊容器/容器适配器第11章 stringstring和C-string的关系第13章 以stream class来输入输出IOSTream中的一些操控器 阅读全文
posted @ 2012-06-28 00:42 Mr.Rico 阅读 (67) | 评论 (0) 编辑
摘要:第5章 STL标准模板库5.1 STL中的各个组件STL的基本观念就是将数据和操作分离。而这种将数据和算法分开对待的考虑和面向对象的思想是矛盾的。5.2 容器序列容器Sequence containers和关联式容器Assocative containers严格来说,C++标准并未定义某一种容器的具体实现,然而标准却规定了对其行为和复杂度的要求,这让库的作者没有太多变化的余地。所以实际上各个实际版本之间只是在细节上有所差异。STL中的插入迭代器测试三种迭代器的代码:#include<iostream>#include<vector>#include<list> 阅读全文
posted @ 2012-06-28 00:34 Mr.Rico 阅读 (73) | 评论 (0) 编辑
摘要:序言侯捷译序C++98标准之后,C++标准库进行了很大的扩充,STL被C++标准库。侯捷的STL三个阶段:String,IOSTREAM和Locale程序库第2章 C++及其标准程序库简介string和STL的不同设计原则,IOSTREAM库模板函数必须在头文件中以inline函数的形式来实现。这是由模板的特点所决定的。模板参数Notype Template参数 (非类型模板参数)Default Template参数(缺省模板参数)异常处理,其中涉及到stack unwinding(堆栈辗转开解)C++标准异常类别explicit禁止隐式转换的产生C++标准手册中的复杂度amortized(分 阅读全文
posted @ 2012-06-28 00:12 Mr.Rico 阅读 (123) | 评论 (0) 编辑
摘要:第 1章 C语言 1 指针 C语言中定义字符串的两种形式: char a[]="hello world"; char *b="hello world"; 对于这两种形式的区别和联系可以使用下面的操作进行区别: (1)sizeof(a)=strlen(a)+1;//主要是C语言中对于字符串的存储特点,会自动的以'\0'作为结束标志。 sizeof(b)=4; (2)strlen(a)==strlen(b);//因为a和b其实都是定义了一个字符串。 (3)从实现的本质上看,a是一个数组,在进行程序编译之后是一个存在于符号表中,其对应的数组内存 阅读全文
posted @ 2012-06-27 22:56 Mr.Rico 阅读 (745) | 评论 (0) 编辑
摘要:这是C++中所支持的两种初始化方式。复制初始化使用=符号,而直接初始化将初始化式放在圆括号中。(1)对于一般的内建类型,这两种初始化基本上没有区别。int a(5);//直接初始化int a=5;//复制初始化int a=int (5);//直接初始化(2)当用于类类型对象时,初始化的复制形式和直接形式有所不同:直接初始化直接调用与实参匹配的构造函数,复制初始化总是调用复制构造函数。复制初始化首先使用指定构造函数创建一个临时对象,然后使用复制构造函数将那个临时对象复制到正在创建的对象。string null_book = "9-999-99999-9 ";//copy-in 阅读全文
posted @ 2012-06-25 22:05 Mr.Rico 阅读 (2923) | 评论 (0) 编辑
摘要:栈增长和大端/小端问题是和CPU相关的两个问题。在内存管理中,与栈对应是堆。对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,它的生长方式是向下的,是向着内存地址减小的方向增长。在内存中,“堆”和“栈”共用全部的自由空间,只不过各自的起始地址和增长方向不同,它们之间并没有一个固定的界限,如果在运行时,“堆”和 “栈”增长到发生了相互覆盖时,称为“栈堆冲突”,系统肯定垮台。在常见的x86中内存中栈的增长方向就是从高地址向低地址增长。我们可以通过一些代码来判断栈的增长方向:#include<stdio.h>staticintstack_dir;staticvoid 阅读全文
posted @ 2012-06-22 20:47 Mr.Rico 阅读 (11855) | 评论 (2) 编辑
摘要:主要是利用位操作来判断每一位是否为1方法一:清除整数a最右边的1可以使用这个操作:a&(a-1)所以可以利用这个方法来得到1的个数:intcount_one(unsignedx){intcount=0;while(x){count++;x=x&(x-1);}returncount;}方法二:对整数进行移位,然后判断最后一位是否为1intcount_one2(unsignedx){intcount=0;inti=0;while(i<32){if((x>>i)&0x1)count++;i++;}returncount;}方法三:这个方法和方法二类似,只是每 阅读全文
posted @ 2012-06-21 22:57 Mr.Rico 阅读 (1875) | 评论 (0) 编辑
摘要:今天下午参加民生银行总行的笔试,最后一个题是一个小的算法题。题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。并且要求是用两种方法。在网上搜索了一下,网上说这是2006年google的面试题。方法1:最简单,容易想到的就是双循环的那种,从前往后进行遍历,这种的复杂度是O(n^2)简单的C++代码如下:boolmethod1(conststring&s,char&c){intlen=s.size();inti;vector<bool>flag(len);for(inti=0;i<len;i++)flag[i]=true;for( 阅读全文
posted @ 2012-06-17 23:10 Mr.Rico 阅读 (1301) | 评论 (0) 编辑
摘要:一、STL 概述1.1 C++标准库高级程序设计语言希望尽可能减少程序员的重复工作,因此提供了各种抽象机制降低程序复杂性。在程序设计实践中积累了许多经验和代码,充分利用这些经验和代码是降低程序复杂性的有效途径。程序设计语言必须提供代码重用的机制。一般而言有源代码级别的重用和二进制代码级别的重用两种机制,源代码级别的重用非常简单,只需要将源代码一起编译即可。但是许多时候源代码丢失或者厂商不愿意公开源代码,只有二进制代码可用,此时程许多程序设计语言提供了标准库和相应的库管序设计语言应该提供重用二进制代码的机制。理机制,通过标准库用户可以使用常用的算法和数据结构,通过库管理机制用户可以使用第三方的库 阅读全文
posted @ 2012-06-16 16:18 Mr.Rico 阅读 (3118) | 评论 (0) 编辑
摘要:排列组合是常见的一个问题。1. 排列算法这个主要采用递归的方法来解决。具体代码如下:voidswap(int&a,int&b){if(a==b)return;intt=a;a=b;b=t;}voidperm(intarr[],intk,intm){if(k==m){copy(arr,arr+m+1,ostream_iterator<int>(cout,""));cout<<endl;}else{for(inti=k;i<=m;++i){swap(arr[i],arr[k]);perm(arr,k+1,m);swap(arr[i] 阅读全文
posted @ 2012-06-02 16:00 Mr.Rico 阅读 (334) | 评论 (0) 编辑