关于本书

关于本书

本书中所有的例子都很简单,都可以很容易编译和运行,不过读者们还是需要注意一下自己所选择的操作系统和编译器。下面就让我们来看一下在编译和运行本书例程时,所要注意的一些内容。

编译和运行例程

本书的所有例子都在Linux和Mac OS进行开发和验证,我们使用GNU的C++编译器g++,和LLVM的C++编译器 clang++

shell环境下可以使用如下的命令使用g++编译例程:

$ g++ -std c++lz —o recipe_app recipe_code.cpp

要使用clang++的话,命令行类似:

$ clang++ -std C++ Iz -o recipe_app recipe_code.cpp

上面两个例子都假设我们的C++例程写在 recipe_code.cpp文件中。完成编译后,生成可执行二进制文件recipe_app,然后使用如下命令执行它:

$ . /recipe_app

书中很多例子,都是通过标准输入读取整个文件的内容。遇到这样的例子时,我们使用标准UNIX管道和cat命令直接将文件内容传输给我们的应用,命令如下所示:

$ cat file.txt | ./recipe_app

上面的方法适用于Linux和Mac OS系统。在微软Windows Shell中,需要使用如下的命令:

> recipe app.exe < file.txt

如果你不想在Shell命令行中运行,你可以在Microsoft Visual Studio IDE中运行,不过需要你修改一下配置, "Configuration properties > Debugging ",并且添加"< file. txt" ,使用 Visual Studio加载应用就能直接运行程序了。(Visual Studio IDE的话选定对应的解决方案,右键后选择“属性”,在“调试”页面输入相应的命令行参数)

前期准备

如果最近你阅读了本书中C++17的新特性,并使用前卫的编译器编译了这些代码,你可能会在编译阶段遇到一些问题。因为你使用到的一些C++17 STL新特性可能还没有在编译器中进行实现。

运行本书代码时,需要给<execution_policy><filesystem>头文件添加前缀experimental/ 。其会将你将是用到的一些STL算法、数值等等包含入你的代码中,不过这也取决于编译器标准库的更新程度和稳定性。

这同样使用于命名空间的新特性。标准库中,实验部分的实现并不在std命名空间中,而是在std::experimental中。

适读群体

如果你没有编写过C++程序的经验,那么请将本书放回书架。如果你只想学习有关语言基础的知识,那么本书不是你理想的选择。当你了解完语言基础后,本书会对你的语言技巧进行升级。

除此之外,如果你符合如下的描述的话,可以继续阅读本书:

  • 已经了解过C++的基础,不过现在你不知道下一步自己该怎么走,这是因为你与资深C++达人还有很大的差距。

  • C++基础十分牢靠,但是你对STL知之甚少。

  • 对C++的某个老版本比较了解,比如C++98、C++11或C++14。

以上这些描述,都是基于你使用C++的频度而论。本书储备了很多优秀的STL新特性,等待你去发现。

章节设计

本书中你会发现几个经常出现的标题:

(译者:这些副标题只在本节翻译,正文中使用英文原文作为副标题)

  • Getting ready

  • How to do it

  • How it works

  • There's more

  • See also

下面简单介绍一些这几个副标题所涵盖的内容:

准备开始 Getting ready

本节会说明我们的期望,以及如何在初期对环境或软件进行配置。

如何完成 How to do it...

本节包含实现所需的步骤。

如何工作 How it works...

本节会对前一节所发生的事情,进行详细解释。

信息补充 There's more...

本节包含了一些式例相关的补充信息,以便读者对式例有更深入的了解。

更多信息 See also

为式例提供一些帮助链接,有助于了解C++的更多知识。

文本样式

本书中,使用不同的文本样式区分不同种类的信息。下面的一些例子会解释这些风格的含义。

文本的代码,数据库表名,文件夹名,文件名,文件的扩展名,路径名,虚拟的URL,用户输入和推特引用,会展示成这种样式: "下一步需要修改build.properties 文件。"

代码块为这种样式:

my_wrapper<T1, T2, T3> make wrapper (Tl t 1, T 2 t2, T3 t3) 
{
  return t 1, t2, t3;
}

新术语关键字使用粗体。你在屏幕上看到的单词,例如菜单或对话框,会是这种样式: "完成后,点击执行。"

警告或重要说明会显示在一个方框中。

提示和技巧会用斜体样式

读者反馈

我们欢迎读者的反馈。这样我们就知道这本书哪里好,哪里不好。读者的反馈对于我们来说十分重要,并且能帮助我们确定读者关注的重点,从而让读者在阅读本书时的收获最大化。一般的反馈可以通过发送电子邮件到 feedback@packtpub.com,并在主题中提到这本书的名字即可。如果您是某个方便的专家,并且对写作或写书感兴趣的话, 可以了解一下我们的作者指南www.packtpub.com/authors 。

客户支持

现在您已经是本书的主人,我们会为您购买本书的行为,提供相应的支持服务。

源码下载

可使用您在 http://www.packtpub.com 的账号下载本书式例代码。 如果您在别处购买了本书,可以通过访问 http://wmv.packtpub.com/support ,客服会将注册文件直接发送给您。

您可以按照以下步骤下载代码:

  • 网页端使用您的电子邮件地址和密码进行登录或注册。将鼠标悬停在“SUPPORT”标签上。点击“Downloads & Errata”。搜索框内键入本书的名字。选择你所查找的书籍,并下载其代码包。只需您在购买本书的下拉菜单中点击“Code Download”即可。

  • 压缩包下载完毕后,请确认您所使用的解压缩软件的版本和所解压的文件夹地址。Windows:WinRAR / 7-Zip;Mac :Zipeg / iZip / UnRarX;Linux :7-Zip / PeaZip。

本书代码github的托管地址为 https://github.com/PacktPublishing/Cpp17-STL-Cookbook

其他书籍的代码包和视频目录在 https://github.com/PacktPublishing/ 下都能看到。

快去看一下吧!

勘误列表

尽管我们很认真的保证本书内容的正确性,但难免还是会出现错误。如果您在我们的书或代码中发现了疑似错误的地方,请反馈给我们,我们将感激不尽。如果这真是个错误,我们将在后续的版本中修复这个问题,以免误导更多的读者。如果您发现了任何错误,请访问 http://mvw.packtpub.com/submit-errata 选择本书,点击勘误提交的链接,然后详述你发现的问题。当您的勘误得到了验证,您的勘误将会记录在我们的勘误列表上。

想要了解之前的勘误列表, 可以在 https://mwv.packtpub.com/books/content/support 上面输入书籍的名字查找对应的勘误列表。想要看到的内容将会出现在勘误栏下。

盗版必究

互联网上存在着盗版问题。Packt非常重视我们的版权和许可证。如果您在网上发现我们的作品的非法副本,请提供地址或网站名称,以便我们进行维权。

请通过 copyright@packtpub.com 联系我们,麻烦在邮件内附上与涉嫌盗版的相关资料。感谢您帮助我们保护相关作品的只是产权。

问题解答

如果您对本书有任何的问题,您可以通过向 questions@packtpub.com发送邮件告诉我们,我们会尽可能的解答您所提出的问题。

Last updated