# Introduction

## *函数式编程和Lambda表达式的最新功能*

* 作者：Jacek Galowicz
* 译者：陈晓伟

## 本书主旨

* 了解C++最新的特性，使用标准库(STL)编写更优秀的代码，使用最新特性和STL节省开发上的时间开销。
* 了解STL特性所适用的范围和能力，并用其特性解决实际问题。
* 简洁优雅地使用STL实现算法。

## 本书概述

作为对《C++17 STL Cook book》的中文翻译。

C++因其快捷、高效和灵活的特点，帮助人们解决了很多问题，在很多领域种都有所使用。其将要到来的新版本，将会改变人们的编程习惯。如果想要掌握更加高明的编程方式，或是让代码更轻松地移植，就必须熟练掌握C++17 STL。本书将会通过实际例子帮助你了解C++17 STL，并掌握C++17 STL的使用方法。

本书将帮助你了解新版本的语言机制和标准库特性，并且告诉你他们如何工作。与众不同的是，我们会采用针对问题的特定解决方案，来帮助你克服使用方面的障碍。我们使用STL来解决实际问题，这样你就能了解到STL的核心，比如容器、算法、工具类、Lambda表达式，迭代器等等。这些实际问题的解决在展示如何更好编程的同时，帮助我们更多的了解STL。

看完本书后，你将了解到C++17最新的功能，并优雅地使用STL，且高效的解决难题。

## 将会学到

* 了解新语言的核心特性，以及这些特性所解决的问题。
* 通过实现迭代器来了解特性的需求，以及其内部工作流程。
* 探索算法、函数编程风格和Lambda表达式。
* 使用STL中提供的丰富、可移植、快速、久经考验、精心设计的算法。
* 使用STL中的字符串代替C风格的字符串。
* 了解支持并发和同步的标准类，以及如何使用
* 使用C++17 STL中的文件系统库

## 作者简介

Jacek Galowicz 在德国亚琛工业大学(Rheinisch-Westfälische Technische Hochschule Aachen University)获得电气工程/计算机工程硕士学位。在校期间，他特别喜欢以学生助教的身份参加教学和研究，并且在多项科技刊物发表文章。毕业后，他选择做一名自由执业职，并涉及很多领域，比如使用C和C ++编写内核驱动、 3维图像编程、数据库、网络通讯和物理模拟。近几年，他在Intel和FireEye平台上为Intel x86虚拟化编写性能和安全敏感的微内核操作系统，目前常驻于不伦瑞克(德国中北部城市，属下萨克森州)。 他对使用最新的C++实现低层软件有着强烈的热情，并且努力地将高性能与优雅地编码风格相结合。近年来学习纯粹的函数式编程和Haskell的经历，让他更有动力(在元编程的帮助下)实现泛型编码。

## 作者鸣谢

感谢支持我翻译的各位同学们！

写书的同时也在创办一家公司，给我带来很多乐趣的同时，也是次很有趣的人生体验。这些有趣的经历来源于我身边的每一个人，感谢我可爱的女友给予我的耐心和支持，以及我公司的合伙人，当然还有支持我的所有朋友。这里要特别感谢Arne Mertz为我提供的的宝贵的建议, 当然还有Torsten Robitzki和来自于Oliver Bruns社区C++用户组的Hannover，感谢他们对本书的反馈。

## 代码评审

**Arne Mertz**是一个具有10多年C++经验的专家。他在汉堡大学攻读物理专业，而后转行成为一名软件开发攻城狮。其主要使用C++完成金融企业的应用程序。Arne就任于德国Zuhlke Engineering公司，并且它的博客也非常出名——[Simplify C++!](https://arne-mertz.de)。对于C++，其主张在使用清爽，并具有良好可维护性的代码风格。

## 本书相关

* github 源翻译地址：<https://github.com/xiaoweiChen/CPP-17-STL-cookbook>
* gitbook 在线阅读：<https://zoupers.gitbook.io/cpp-17-stl-cookbook/>
* 本书源码：<https://github.com/PacktPublishing/Cpp17-STL-Cookbook>
