- 博客(22)
- 资源 (6)
- 收藏
- 关注
原创 C++ 类作用域
形参表和函数体处于类作用域中,函数返回类型不一定在类作用域中,如果函数在类定义体之外定义,则用于返回类型的名字在类作用域之外,否则在类作用域内。class Screen{public:typedef std::string::size_type size;//not need to specific the screen::inline size get_cursor() const;
2012-05-23 10:39:36
816
转载 C++泛型算法
本文主要讨论C++标准库中的泛型算法(generic algorithm)。泛型算法是使用容器的强有力的辅助工具。 如果文中有错误或遗漏之处,敬请指出,谢谢! 标准库为容器类型定义的操作很少,并没有为每个容器实现更多的操作。因为这部分操作可以抽象出来为所有的容器工作,那就是泛型算法。所谓“泛型”是指这些算法可以应用于多种容器类型上,而容器内的元素类型也可以多样化。标
2012-05-22 15:07:34
11700
1
转载 关联容器
关联容器:利用键,STL的关联容器能直接保存和提取键。4个关联容器分别为:multiset,set,multimap,map。每个关联容器都按有序的方式维护者它的键。对关联容器的迭代遍历是根据这个容器的排序顺序进行的。multiset和set提供了对值的集合的操作,其中的值都是键,每个键并不存在一个关联值。multimap和map提供了与键相关联的值的操作(这些值有
2012-05-21 21:37:06
1632
转载 序列容器(deque)
STL学习之四——deque序列容器Deque是“双端队列”的简写,像vector一样,deque类的实现提供了读取和修改它的元素的高效索引访问(使用下标)。像list一样,deque类的实现提供了在前端和后端进行高效插入和删除的操作。deque类对随机访问迭代器提供了支持,因此deque能够用于所有的STL算法。Deque最常见的用途之一是维护一个先入先出的队列。
2012-05-21 21:15:32
653
转载 序列容器(list)
list序列容器List序列容器提供了在容器的任何位置执行高效的插入和删除功能。类模板list是用双链表实现的。也就是说,链表中每个节点都包含指向链表中前一个节点的一个指针和指向链表中后一个节点的指针。这就使得类模板list支持双向迭代器,允许以向前和向后的方式遍历容器。下面以demo中的例子来说明list的用法。[cpp] view plaincopy
2012-05-21 20:43:39
647
转载 序列容器(vector)
STL学习之二 序列容器(vector)一、C++标准模板库提供了三种序列容器:vector、list、deque。类模板vector和deque都以数组为基础,类模板list实现了链表的数据结构。STL中最流行的是类模板vector,它是一种更健壮的数据类型,相当于动态数组,能动态得改变数组的大小。Vector和C和C++的原始数组不同。为什么不同呢?因为vector能够
2012-05-21 20:34:51
893
转载 标准模板库STL介绍
1. STL介绍标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下本文将介绍STL并探讨它的三个主要概念:容器、迭代器、算法。STL的最大特点就是:数据结构和算法的分离,非面向对象本质。访问对象是通过象指针一样的迭代器实现的;容器是象链表,矢量之类的数据结构,并按模板方式提供;算法是函数模板,用于操作容器中的数据。由于ST
2012-05-21 20:24:31
696
原创 文件输入输出的模式
文件模式:in打开文件做读操作out 打开文件做写操作app在每次写之前找到文件尾ate打开文件后立即将文件定位在文件尾trunc打开文件时清空已存在的文件流binary以二进制模式进行IO操作文件模式组合:out 打开文件做写操作,删除文件中已有
2012-05-18 15:03:58
695
原创 指向函数的指针
函数指针是指指向函数而非指向对象的指针。如下:bool (*pf) ( const string&, const string & );这条语句将pf声明为指向函数的指针,它让所指向的函数带有两个const string& 类型的形参和bool类型的返回值。注意*pf两侧的括号不能少。1.用typdef简化函数指针的定义typedef bool (*cmpFcn) ( co
2012-05-18 14:09:47
452
转载 const函数
classPoint{ public: intGetX()const; intGetY()const; voidSetPt (int,int); voidOffsetPt (int,int); private: intxVal, yVal;};1.一些成员函数改变对象,一些成员函数不改变对象. 2.为了使成员函数的意义更加清楚,我们可在不改变对象
2012-05-17 15:28:09
597
转载 C++异常处理
引言异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题。而传统错误处理技术,检查到一个局部无法处理的问题时:1.终止程序(例如atol,atoi,输入NULL,会产生段错误,导致程序异常退出,如果没有core文件,找问题的人一定会发疯)2.返回一个表示错误的值(很多系统函数都是这样,例如malloc,内存不足,分配失败,返
2012-05-17 14:50:55
695
原创 指针与引用的区别
虽然引用和指针都可以间接的访问另一个值,但它们之间有两个重要的区别。第一个区别:引用总是指向固定的某一个对象,所以定义引用时没有初始化式错误的。第二个重要的区别是赋值行为的差异:给引用赋值修改的是该引用所关联的对象的值,而并不是使引用于另一个对象关联。引用一但初始化,就始终指向同一个特定对象。考虑下面两个例子:int ival 1= 1024, ival2 = 2048;i
2012-05-16 16:06:20
333
原创 bitset类型
bitset对象的定义和初始化:bitset b; b有n位,每位都为0bitset b(u); b是unsigned long型u的一个副本bitset b(s); b是string对象s中含有位串的副本bitset b(s, pos, n ); b是s中从位置pos开始的n个位的副本bitset对象上的操作:b.any( ); b中是否存在值为1的二进制位?
2012-05-15 14:44:13
356
原创 string 类型
string对象初始化:string s1; 默认构造函数,s1为空串string s2(s1); 将s2初始化为s1的一个副本string s3("value"); 将s3初始化为一个字符串字面值的副本string s4(n, 'c'); 将s4初始化为字符‘c’的n个副本string对象的读写:使用标准输入输出操作符读写string对象使用getline函数
2012-05-15 14:14:58
388
原创 const 限定符
const将一个对象转换为一个常量,即这个常量不能被修改。const 对象默认为文件的局部变量,如果让全局const变量可以使别的文件调用,必须加上const限定符//file1.ccextern const int i = 0;//file2.ccextern const int i;while( !i ){};*非const变量默认为extern, 要使
2012-05-15 13:45:38
341
原创 声明和定义
C++区分了声明和定义:定义:用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义声明:用于向程序表明变量的类型和名字。定义也是声明:当定义变量的时候我们声明了类型和名字。可以通过关键字extern声明变量:extern int i; //声明变量int i; //定义变量这时extern是声明而不是
2012-05-15 13:29:07
390
原创 变量初始化
方法:C++支持两种初始化变量:复制初始化和直接初始化。复制初始化语法用等号,直接初始化是把初始化式放在括号中:int ival(1024); //直接初始化int ival = 1024; //复制初始化规则:内置类型变量初始化:在函数体外定义的变量都初始化成0,在函数体内定义的变量不进行自动初始化。类类型变量初始化:如
2012-05-15 13:22:20
560
原创 哈希表及其常用算法(代码实现)
整理了一下Hash表相关内容,如下:Hash 表是使用 O(1) 时间进行数据的插入删除和查找,但是 hash 表不保证表中数据的有序性,这样在 hash 表中查找最大数据或者最小数据的时间是 O(N) 。1 寻址和 hash 函数 理想状态下 hash 足够大,每一数据保存在一个 hash 存储单元内,这样对于插入删除和查找某一个数据就可以直接
2012-04-23 15:11:45
20526
转载 结构的存储分配(c和指针.P206.)
#include#include int main(){ struct ALIGN { char a; int b; char c; }; struct ALIGN1
2012-04-22 20:51:57
732
转载 打印字符串的任意一部分
使用printf()函数打印字符串的任意部分,请看下例:#include #include #include int main(){ char * source_str = "THIS IS THE SOURCE STRING" ; /* Use printf() to print the first 11 characters of source_str. */
2012-04-22 20:31:02
3566
原创 程序员面试----动态规划法的应用
一、概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。 适用于动态规划算法的问题一般有以下三个性质:(1) 最优化原理:如果问题的最优解所包含的子问题的解也是最优的,就称该问题具有最优子结构,即满足最优化原理。(2) 无后效性:即某阶段状态一旦确定,
2012-04-22 19:52:08
1494
原创 程序员面试---分治法的应用
分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。分治策略是:对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。这种算法设计策略叫做分治法。 分治法所能解决的问题一般具有以
2012-04-20 15:20:17
1059
bardemo包含sizecbar.h+sizecbar.cpp+scbarg.h+scbarg.cpp文件
2010-12-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人