摘要: 除了顺序容器,标准库还提供了三种顺序容器适配器:queue、priority_queue 和 stack。适配器(adaptor)是标准库中通用的概念,包括容器适配器、迭代器适配器和函数适配器。本质上,适配器是使一事物的行为类似于另一事物的行为的一种机制。容器适配器让一种已存在的容器类型采用另一种不同的抽象类型的工作方式实现。例如,stack(栈)适配器可使任何一种顺序容器以栈的方式工作。表 9.22 列出了所有容器适配器通用的操作和类型。// 表 9.22. 适配器通用的操作和类型size_type 一种类型,足以存储此适配器类型最大对象的长度value_type 元素类型... 阅读全文
posted @ 2013-06-17 11:13 HandsomeDragon 阅读(852) 评论(0) 推荐(0)
摘要: /*** 本节是作为《进一步探讨 string 类型》的详细补充,* * 可直接跳过,也可以先粗略浏览。* * 可以在编写程序时遇到有关 string 的这些操作时,才回来阅读其细节。**/[1. 构造 string 对象的其他方法]string 类支持表 9.2 所列出的几乎所有构造函数,只有一个例外:string 不支持带有单个容器长度作为参数的构造函数。创建 string 对象时:不提供任何参数,则得到空的 string 对象;也可将新对象初始化为另一个 string 对象的副本;或用一对迭代器初始化:或者使用一个计数器和一个字符初始化:string s1; // s1 is the e 阅读全文
posted @ 2013-06-14 17:17 HandsomeDragon 阅读(298) 评论(2) 推荐(0)
摘要: [0. 回望复习]之前介绍了 string 类型,表 9.12 扼要重述了在该节中介绍的 string 操作。// 表 9.12 string s; 定义一个新的空 string 对象,命名为 sstring s(cp); 定义一个新的 string 对象,用 cp 所指向的(以空字符 null 结束的)C 风格字符串初始化该对象string s(s2); 定义一个新的 string 对象,并将它初始化为 s2 的副本is >> s; 从输入流 is 中读取一个以空白字符分隔的字符串,写入 sos << s; 将 s 写到输出流 os 中getl... 阅读全文
posted @ 2013-06-14 16:44 HandsomeDragon 阅读(191) 评论(0) 推荐(0)
摘要: [1. 关系操作符]所有的容器类型都支持用关系操作符来实现两个容器的比较。相互比较的容器必须具有相同的容器类型,而且其元素类型也必须相同。容器的比较实质上是基于容器内元素的比较。如果容器的元素类型不支持某种操作符,则该容器就不能做这种比较运算。下面的操作类似于 string 类型的关系运算:如果两个容器具有相同的长度而且所有元素都相等,那么这两个容器就相等;否则,它们就不相等。如果两个容器的长度不相同,但较短的容器中所有元素都等于较长容器中对应的元素,则称较短的容器小于另一个容器。如果两个容器都不是对文的初始子序列,则它们的比较结果取决于所比较的第一个不相等的元素。理解上述操作的最简单方法是研 阅读全文
posted @ 2013-05-28 17:17 HandsomeDragon 阅读(239) 评论(0) 推荐(0)
摘要: C++ 的每种顺序容器都提供了一组有用的类型定义和以下操作: 1. 在容器中添加元素。 2. 在容器中删除元素。 3. 设置容器大小。 4. (如果有的话)获取容器内的第一个和最后一个元素。//所有容器都提供下表所列出的类型size_type 无符号整型,足以存储此容器类型的最大可能容器长度iterator 此容器类型的迭代器类型const_iterator 元素的只读迭代器类型reverse_iterator 按逆序寻址元素的迭代器const_reverse_iterator 元素的只读(不能写)逆序迭代器difference_t... 阅读全文
posted @ 2013-05-28 16:14 HandsomeDragon 阅读(331) 评论(0) 推荐(0)
摘要: C++ 的标准库定义了 3 种顺序容器类型:vector、list 和 deque(是双端队列"double-ended queue"的简写,发音为"deck")它们的差别在于访问元素的方式,以及添加或删除元素相关操作的运行代价。标准库还提供了 3 种容器适配器(adaptors)。实际上,适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型。顺序容器适配器包括 stack、queue 和 priority_queue 类型,见下表——//顺序容器 vector 支持快速随机访问list 支持快速插入/删除deque 双端队 阅读全文
posted @ 2013-05-28 15:01 HandsomeDragon 阅读(351) 评论(0) 推荐(0)
摘要: [1. 条件状态]在展开讨论 fstream 和 sstream 头文件中定义的类型之前,需要了解更多 IO 标准库如何管理其缓冲区及其流状态的相关内容。谨记本节和下一节所介绍的内容同样适用于普通流、文件流以及 string 流。所有 IO 对象都有一组条件状态,用来指示是否可以通过该对象进行 IO 操作。如果出现了错误(例如遇到文件结束符)对象的状态将标志无法再进行输入,直到修正了错误为止。标准库提供了一组函数设置和检查这些状态,用来标记给定的 IO 对象是否处于可用状态,或者碰到了哪种特定的错误。下表 列出了标准库定义的一组函数和标记,提供访问和操纵流状态的手段。strm::iostate 阅读全文
posted @ 2013-05-24 14:20 HandsomeDragon 阅读(251) 评论(0) 推荐(0)
摘要: C++ 的输入/输出(input/output)由标准库提供。标准库定义了一些类型,支持对文件和控制窗口等设备的读写(IO)。另外一些类型,使 string 对象能够像文件一样操作,而无须 IO 就能实现数据与字符之间的转换。这些 IO 类型都定义了如何读写内置数据类型的值。此外,通常类的设计者还可以使用 IO 标准库设施读写自定义类的对象。类类型通常使用 IO 标准库为内置类型定义的操作符和规则来进行读写。getline 函数: 需要分别取 istream 类型和 string 类型的两个引用形参, 其功能是从 istream 对象读取一个单词,然后写入 string 对象中。为了同时支持或 阅读全文
posted @ 2013-05-14 14:39 HandsomeDragon 阅读(349) 评论(0) 推荐(0)
摘要: 函数指针是指指向函数而非指向对象的指针。像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关: // pf points to function returning bool that takes two const string references bool (*pf)(const string &, const string &);pf 声明为指向函数的指针,它所指向的函数带有两个 const string& 类型的形参和 bool 类型的返回值。*pf 两侧的圆括号是必需的: // declares a functio 阅读全文
posted @ 2013-05-13 16:23 HandsomeDragon 阅读(364) 评论(0) 推荐(0)
摘要: 0. 定义与声明出现在相同作用域中的两个函数,如果具有相同的名字而形参列表不同,则称之为“重载函数”。(任何程序都仅有一个 main 函数的实例。main 函数不能重载。>_<||| 这一点就不用多解释什么了吧。。。)通过省去为函数起名并记住函数名字的麻烦,函数重载简化了程序的实现,使程序更容易理解。函数名只是为了帮助编译器判断调用的是哪个函数而已。例如,一个数据库应用可能需要提供多个 lookup 函数,分别实现基于姓名、电话号码或账号之类的查询功能。函数重载使我们可以定义一系列的函数,它们的名字都是 lookup,不同之处在于用于查询的值不相同。如此可传递几种类型中的任一种值调 阅读全文
posted @ 2013-05-10 15:10 HandsomeDragon 阅读(603) 评论(0) 推荐(0)