文章 2017-05-02 来自:开发者社区

C++程序设计:原理与实践(进阶篇)15.1 存储和处理数据

摘要 Programming: Principles and Practice Using C++, Second Edition 容器和迭代器 只做一件事,并把它做好。多个程序协同工作。 ——Doug McIlory 本章和下一章将分别介绍C++标准库(STL)中的容器和算法部分。STL是一个用于处理C++程序中数据的可扩展框架。我们首先通过一个简单的例子来说明STL的设计理念和基本概念,然.....

文章 2017-05-02 来自:开发者社区

C++程序设计:原理与实践(进阶篇)16.4 函数对象

16.4 函数对象 因此,我们希望向f?ind_if()传递断言,同时希望断言能够将元素与以参数形式传递的值进行比较。特别地,我们希望能编写如下形式的代码:   显然,Larger_than必须满足如下条件: 能作为断言被调用,例如,pred(*f?irst); 能够存储一个数值,例如31或x,以备调用时使用。 为了满足这些条件,我们需要“函数对象”,即一种能够实现函数行为的对象。我们需...

文章 2017-05-02 来自:开发者社区

C++程序设计:原理与实践(进阶篇)16.3 通用搜索算法f?ind_if()

16.3 通用搜索算法f?ind_if() 其实我们并没有那么经常地需要查找一个特定值。我们通常更感兴趣的是在序列中查找符合某种标准的值。如果能够允许我们自己定义查找标准,这样的f?ind操作就更为有用。例如,我们也许希望查找大于42的值,也许希望在不考虑大小写的情况下比较字符串,也许希望找到第一个奇数值,也许希望查找一个地址域值为“17 Cherry Tree Lane”的记录。 根据用户提.....

文章 2017-05-02 来自:开发者社区

C++程序设计:原理与实践(进阶篇)16.2 最简单的算法f?ind()

16.2 最简单的算法f?ind() f?ind()可能是最简单但又很有用的算法,它在一个序列中查找一个给定值:   让我们看看f?ind()的定义。你自然可以无须了解f?ind()的确切实现细节就使用它——实际上,我们已经在前面的章节中使用过f?ind()了(例如15.6.2节)。但是,f?ind()的定义展示了很多有用的设计思想,因此了解其实现是有价值的。 首先,f?ind()对一个...

文章 2017-05-02 来自:开发者社区

C++程序设计:原理与实践(进阶篇)16.1 标准库算法

摘要 Programming: Principles and Practice Using C++, Second Edition 算法和映射 理论上,实践是简单的。 ——Trygve Reenskaug 本章将完成我们对STL基本思想的介绍以及对STL所提供工具的纵览。在本章中,我们主要关注算法。我们的主要目的是给你介绍一些最有用的算法,它们能够节省你大量时间,即使达不到以月计,也能达到以天计....

文章 2017-05-02 来自:开发者社区

C++程序设计:原理与实践(进阶篇)15.10 容器概览

15.10 容器概览 STL提供了一些容器: 标准容器 vector 连续存储的元素序列;应用作默认容器 list 双向链表;当你希望在不移动现有元素的情况下完成对元素的插入和删除时使用 deque list和vector的交叉;除非你对算法和计算机体系结构知识非常精通,否则不要使用它 map 平衡有序树;当你需要按值访问元素时使用它(参见16.6.1~16.6.3节) multimap 平衡.....

文章 2017-05-02 来自:开发者社区

C++程序设计:原理与实践(进阶篇)15.9 调整内置数组达到STL版本的功能

15.9 调整内置数组达到STL版本的功能 我们之前反复指出内置数组的不足之处:它们动不动就会隐式转换成指针,它们不能通过赋值操作进行拷贝,它们不知道自己的大小(见13.6.2节),等等。我们也指出了它们最大的优点:它们近乎完美地利用了物理内存。 为了综合二者之长,我们可以创建一个具有数组优点而没有其不足的array容器。array的一个版本已经作为技术报告的一部分引入C++标准中。由于技术报.....

文章 2017-05-02 来自:开发者社区

C++程序设计:原理与实践(进阶篇)15.8 调整vector类达到STL版本的功能

15.8 调整vector类达到STL版本的功能 在15.5节中为vector增加了begin()、end()和类型别名后,现在只差insert()和erase()就接近我们设计一个std::vector的近似版本的目标了:   我们还是使用指向元素类型的指针T*作为迭代器的类型,这是最简单的方法。我们将边界检查迭代器的实现留作练习(习题18)。 人们通常不会为元素连续存储的数据类型(如...

文章 2017-05-02 来自:开发者社区

C++程序设计:原理与实践(进阶篇)15.7 vector、list和string

15.7 vector、list和string 为什么我们对行用list而对字符用vector呢?更准确地说,我们为什么要用list保存行的序列而用vector保存字符序列呢?再有,为什么不用string来存储一行呢? 我们可以把这些问题再一般化一些。到现在为止,我们知道了四种存储字符序列的方法: char[](字符数组); vector<char>; string; list&...

文章 2017-05-02 来自:开发者社区

C++程序设计:原理与实践(进阶篇)15.6 实例:一个简单的文本编辑器

15.6 实例:一个简单的文本编辑器 列表最重要的性质就是可以在不移动元素的情况下对其进行插入或删除操作。下面我们通过一个例子来说明这一点。考虑应该如何在文本编辑器中表示一个文本文件中的字符。所选用的表示方式应当能够使对文本文件进行的操作简单而高效。 那么具体会涉及哪些操作呢?假设文件能存储在计算机的内存中。也就是说,我们可以选择任何一种适合的表示方式,当需要保存到文件中时,只要把它转换成一个.....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

开发与运维

集结各类场景实战经验,助你开发运维畅行无忧

+关注