# 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://zoupers.gitbook.io/cpp-17-stl-cookbook/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
