文件名称:
c-17-stl-cook-book.pdf
开发工具:
文件大小: 10mb
下载次数: 0
上传时间: 2019-07-14
详细说明:如果最近你阅读了本书中C++17的新特性,并使用前卫的编译器编译了这些代码,你可能会
在编译阶段遇到一些问题。因为你使用到的一些C++17 STL新特性可能还没有在编译器中进
行实现。使用迭代器实现算法
1.74
使用反向迭代适配器进行迭代
1.7.5
使用哨兵终止迭代
1.7.6
使用检查过的迭代器自动化检查迭代器代码
1.7.7
构建zjp迭代适配器
1.7.8
第4章 Lambda表达式
使用 Lambda表达式定义函数
1.8.1
使用 Lambda为std: function添加多态性
18.2
并置函数
8.3
通过逻辑连接创建复杂谓词
1.8.4
使用同一输入调用多个函数
18.5
使用std: accumulate和 Lambda函数实现 transform if
18.6
编译时生成笛卡尔乘积
1.8.7
第5章STL基础算法
19
容器间相互复制元素
1.9.1
容器元素排序
19.2
从容器中删除指定元素
19.3
改变容器内容
194
在有序和无序的 vector中查找元素
1.9.5
将 vector中的值控制在特定数值范围内—sta: clamp
19.6
在字符串中定位模式并选择最佳实现std∷ search
197
对大 vector进行采样
1.9.8
生成输入序列的序列
199
实现字典合并工具
1.9.10
第6章SL算法的高级使用方式
1.10
使用STL算法实现单词查找树类
1.10.1
使用树实现搜索输入建议生成器
1.10.2
使用SπL数值算法实现傅里叶变換
1.10.3
计算两个 vector的误差和
1.10.4
使用AsC字符曼德尔布罗特集合
1.10.5
实现分割算法
1.10.6
将标准算法进行组合
1.10.7
刪除词组问连续的空格
1.10.8
压缩和解压缩字符串
1.10.9
第7章字符串,流和正则表达
创建丶连接和转換字符串
1.11.1
消除字符串升始和结東处的空格
无需构造获取std: string
从用户的输入读取数值
1.114
计算文件中的单词数量
1.11.5
格式化输出
1.11.6
使用输入文件初始化复杂对象
1.11.7
迭代器填充容器—std: istream
118
迭代器进行打印—std: ostream
1.11.9
使用特定代码段将输出重定向到文件
1.11.10
通过集成std: char traits创建自定义字符串类
1.11.11
使用正则表达式库标记输入
1.11.12
简单打印不同格式的数字
1.11.13
从std: iostream错误中获取可读异常
1.11.14
第8章工具类
1.12
转换不同的时间单位—std: ratio
1.12.1
转换绝对时同和相对时间—std: chrono
1.12.2
安全的标识失败—st: optional
1.123
对元组使用函数
1.124
使用元组快速构成数据结构
1.125
将void*替换为更为安全的st:any
1.126
存储不同的类型—std: variant
12.7
自动化管理资源—std: unique_ptr
1.128
处理共享堆内存—std: shared_ptr
1.129
对共享对象使用弱指针
1.12.10
使用智能指针简化处理遗留AP
1.12.11
共享同一对象的不同成员
1.12.12
选择合适的引擎生成随机数
1.12.13
让STL以指定分布方式产生随机数
12.14
第9章并行和并发
1.13
标准算法的自动并行
1.13.1
让程序在特定时间休眠
1.13.2
启动和停止线程
1.13.3
打造异常安全的共享锁— std: unique lock和 std: shared lock
1.134
避免死锁——std: scoped lock
1.13.5
同步并行中使用std:cout
1.13.6
进行延迟初始化—std: call once
1.13.7
将执行的程序推到后台—std: async
1.13.8
实现生产者/消费者模型—std: condition variable
1.13.9
实现多生产者/多消费者模型—std: condition variable
1.13.10
并行ASC德尔布罗特渲染器——std: async
1.13.11
实现一个小型自动化并行库—std: future
1.13.12
第10章文件系统
1.14
实现标准化路径
1.14.1
使用相对路径获取规范的文件路径
1.14.2
列出目录下的所有文件
1.14.3
实现一个类似grep的文本搜索工具
1.144
实现一个自动文件重命名器
1.14.5
实现一个磁盘使用统计器
1.14.6
计算文件类型的统计信息
1.14.7
实现一个工具:通过符号链接减少重复文件,从而控制文件夹大小
1.14.8
Introduction
C++17 STL Cook book
函数式编程和 Lambo白表达式的最新功能
作者: Jacek galowicz
译者:陈晓伟
本书主旨
了解C艹最新的特性’使用标准库(ST凵)編写更优秀的代码’使用最新特性和STL节省开
发上的时间开销。
·了解STL特性所造用的范围和能力’并用其特性解决实际问题。
简洁优雅地使用STL实现算法
本书概逑
作为对《C++17 STL Cook book》的中文翻译。
C+因其快捷丶高效和灵活的特点’帮助人们解决了很多问题’在很多领域种都有所使用。其
将要到来的新版木’将会改变人们的编程习惯σ如果想要掌握更加高明的编程方式’或是让
代码更轻松地移植’就必须熟练掌握C++17STLυ本书将会通过实际例子帮助你了解C++17
sTL’并掌握C++17STL的使用方法
本书将帮助你了解新版本的语言杋制和标准库特性’并且告诉你他们如何工作。与众不同的
是,我们会采用针对问题的特定解决方案’来帮助你克服使用方面的障碍。我们使用STL来解
決实际问题’这样你就能了解到SπL的核心,比如容器丶算法、工具类丶 Lambda表达式,迭
代器等等。这些实际问題的解决在展示如何更好编程的同时·帮助我们更多的了解STL
看完木书后’你将了解到C十+17最新的功能,并优雅地使用STL’且高效的解决难题。
将会学到
了解新语言的核心特性’以及这些特性所解決的问题。
通过实现迭代器来了解特性的需求,以及其內部工作流程
探索算法丶函数编程风格和 Lambda表达式。
使用STL中提供的丰富丶可移植丶快速丶久经考验丶精心设计的算法。
使用STL中的字符串代替C风格的字符串
Introduction
了解攴持并发和同步的标准类’以及如何使用
●使用C++17STL中的文件系统库
作者简介
Jacek galowicz在德国亚琛工业大学( Rheinisch-Westfalische Technische hochschule
Aachen Uniⅳ versity)获得电气工程/计算杌工程硕士学位。在校期间’他特別喜欢以学生助教的
身份参加教学和研究’并且在多项科技刊物发表文章。毕业后’他选择做一名自由执业职,
并涉及很多领域,比如使用C和C++编写内核驱动、3维图像编程、数据库丶网络通讯和物理
模拟。近几年,他在lnte!和 FireEye平台上为 Intel x86虚拟化编写性能和安全敏感的微内核操
作系统’目前常驻于不伦瑞克(德国中北部城市’属下萨克森州)。他对使用最新的C十+实现低
层软件有着强烈的热情’并且努力地将高性能与优雅地编码凤风格相结合。近年来学习纯粹的
函数式编栏和Hask甽的经历’让他更有动力(在元编栏的帮助下)实现泛型编码
作者呜谢
感谢支持我翻译的各位同学们!
写书的冋时乜在创办一家公司·给我带来很多乐趣的同时·也是次很有趣的人生体验。这些
有趣的经历来源于我身边的每一个人,感谢我可爱的女友给予我的耐心和支持,以及我公司
约合伙人,当然还有支持我的所有朋友。这里要特别感谢 Arne mer忆为我提供的的宝贵的建
议,当然还有 Torsten robitzki和来自于 Oliver bruns社区C++用户组的 Hannover,感谢他们对
本书的反馈
代码评审
Arne mertz是一个具有10多年C++经验的专家。他在汉堡大学攻读物理专业’而后转行成为
名软件开发攻城狮。其主要使用C十+完成金融企业的应用程序。Arne就任于德国 ZhiKe
Engineering公司’并且它的博客也非常出名—— Simplify C+!°对于C+其主张在使用清
爽’并具有良好可维护性的代码风格。
本书相关
github翻译地址:htps:/ github. com/ xiaoweiChen/CPP-17-STL- cookbook
· giftbook在线阔读:htts:/ww. giftbook. com/book/chenxiaowei/c-17-st-cook-book
·本书源码:htps:/github.com/PacktPublishing/Cpp17-STL-Cookbook
Introduction
前言
前言
《C++17 STL Cookbook》将结合C+代码实例和标准库(STL)’教会你如何充分使用
C++17。这里要说明的是,本书会尽可能的去使用STL,从而教会大家使用C++17°
C++是一门伟大且具有力量的语言。它使用筒单的高级接口’将隐藏复杂的解决方式隐藏于背
后’不过这样就意味看需要编写高效和低开销的底层代码实现。国际标准仳組织(S○C十←标
准委员会致力于改进C++标准。C++11标准为C++带来了大量不错的特性C++14和C++17也
为C++加入了些新的特性
目前为止’C++作为一门编程语言提供了语言相应的语言特性个标准库工具,用于处理复杂的
标准数据结构和算法,包括:智能指针、 Lambda表达式丶常量表达式丶便捷式可控线程的并
发編程丶正则表达式丶随杌数发生器丶异常丶可变参数模板(C十t的部分模板类是图灵完备
的!)丶自定义文字丶便捷式文件系统遍历等等。这些功能使它成为一种通用的语言,并在软件
行业的所有领域,用于实现高质量和高性能的软件。
不过’很多编程者只将C十当做一门编程语言学习’而不太重视标准库(STL)的使用。不使用
C++所带的标准库·将会让C十看起来就像是具有cass的C语言,21世纪的现代化程序不应该
写成这样。并且’这样的使用令人沮丧’就像是卸掉了它的一条手臂一样
Bjarne Stroustrup(C+之父)在他的《C++程序设计语言》(C+11版本)中写到
请牢记,标准库和语言功能都是为了支撑以软件质量为目标的编程技术。他们应被组合
起来发挥作用——如同建房子的砖块—而非个别地采用来相对孤立地去解决某个特定
问题。
这段话能很明硝的概括我写这本书的目的。本书的所有例子都与实际息息相关·处理这些问
题时·只依赖与SπL’不依赖其他的库。少了其他库的佼赖’就能很容易的将程序运行起来,
不必去为开发环境所困扰。我希望你们受这些例子的启发’找到使用标准库的灵感’用伟大
的编程语言作为解决更高级问題的基石
关于本书
关于本书
本书中所有的例子都很筒单’都可以很容易编译和运行,不过读者们还是需要注意一下自己
所选择的操作系统和编译器。下面就让我们来看一下在编译和运行本书例程时·所要注意的
些内容。
编译和运行例程
本书的所有例子都在 Linux和 Mac os进行开发和验证’我们使用GNU的C++编译器g+,和
LLVM的C十+编译器 clang++。
sh‖环境下可以使用如下的命令使用g+编译例程
s g++ -std C++lz o recipe_app recipe_ code. cpp
要使用cang++的话,命令行类似:
s clang++-std C++ Iz -o recipe_app recipe_code. cpp
上面两个例子都假设我们的C++例程写在 recipe_code. cpp文件中。完成编译后,生成可执行
二进制文件 recipe app,然后使用如下命令执行它:
$. / recipe_app
书中很多例子’都是通过标准输入读取整个文件的內容。遇到这样的例子时,我们使用标准
UNIX管道和cat命令直接将文件内容传输给我们的应用’命令如下所示;
s cat file. txt ./recipe_app
上面的方法适用于 Linux和 Mac os系统。在微软 Windows shell中,需要使用如下的命令:
recipe app. exe file txt
如果你不想在Shel|命令行中运行’你可以在 Microsoft visual studio|DE中运行,不过需要你
修改一下配置," Configuration properties> Debugging",并且添加"
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.