Skip to content

Latest commit

 

History

History
158 lines (92 loc) · 10.1 KB

File metadata and controls

158 lines (92 loc) · 10.1 KB

零、前言

C++ 是使用最广泛的编程语言之一。它快速、灵活、高效,用于解决许多编程问题。

这个学习路径的目标是让你熟悉和适应 C++。通过学习语言结构、函数和类,您将熟悉 C++ 编程的结构,这将有助于您识别代码中的执行流。您将探索并理解 C++ 标准库以及内存分配对于编写更好更快的程序的重要性。

本学习路径还涉及理解高级 C++ 编程带来的挑战。您将学习高级主题,如多线程、网络、并发、性能、元编程、lambda 表达式、正则表达式、测试以及食谱形式的更多内容。

在这条学习之路结束时,你将成为一名 C++ 专家。

这本书是给谁的

这个学习路径是为想用 C++ 获得坚实基础的开发人员设计的。一台电脑,一个互联网连接,以及学习如何用 C++ 编程的愿望,是你开始学习这条学习之路所需要的一切。

这本书涵盖了什么

第 1 章了解语言特性,涵盖 C++ 语句和表达式、常量、变量、运算符,以及如何控制应用中的执行流程。

第 2 章使用内存、数组和指针,讲述了内存在 C++ 应用中是如何分配和使用的,如何使用内置数组,C++ 引用的作用,以及如何使用 C++ 指针访问内存。

第 3 章使用函数,解释了如何定义函数,如何使用可变数量的参数按引用和按值传递参数,创建和使用指向函数的指针,以及定义模板函数和重载运算符。

第 4 章,描述了如何通过类定义新的类型以及类中使用的各种特殊函数,如何将类实例化为对象以及如何销毁它们,如何通过指针访问对象以及如何编写模板类。

第 5 章使用标准库容器,涵盖了所有的 C++ 标准库容器类,以及如何将它们与迭代器和标准算法一起使用,以便您可以操作容器中的数据。

第 6 章使用字符串描述了标准 C++ 字符串类的特性,在数字数据和字符串之间进行转换,字符串国际化,以及使用正则表达式来搜索和操作字符串。

第 7 章诊断和调试,解释了如何准备代码以提供诊断并使其能够被调试,如何突然或优雅地终止应用,以及如何使用 C++ 异常。

第 8 章学习现代核心语言特性,教你现代核心语言特性,包括类型推断、统一初始化、范围枚举、基于范围的 for 循环、结构化绑定等。

第九章处理数字和字符串,讨论了如何在数字和字符串之间进行转换,生成伪随机数,处理正则表达式以及各种类型的字符串。

第 10 章探索函数,深入到默认和删除函数、变量模板、λ表达式和高阶函数。

第 11 章标准库容器、算法和迭代器,介绍几个标准容器、很多算法,教你如何编写自己的随机访问迭代器。

第 12 章数学题,包含一系列数学练习,让你为接下来几章更具挑战性的问题热身。

第 13 章语言特性,为您练习运算符重载、移动语义、用户定义的文字以及模板元编程方面(如变量函数、折叠表达式和类型特征)提出了问题。

第 14 章字符串和正则表达式对于字符串操作有几个问题,比如在字符串和其他数据类型之间转换、拆分和连接字符串,以及处理正则表达式。

第 15 章流和文件系统,介绍了输出流操作以及使用 C++ 17 filesystem库处理文件和目录。

第 16 章日期和时间,为即将到来的chrono库的 C++ 20 扩展做好准备,有几个日历和时区问题可以用date库解决,新的标准添加就是基于这个库。

第 17 章算法和数据结构,是最大的章节之一,包含了各种需要利用现有标准算法的问题;其他是需要实现自己的通用算法或数据结构的地方,比如循环缓冲区和优先级队列。这一章以两个相当有趣的问题结束,道金斯的黄鼠狼程序和康威的生命游戏程序,在那里你可以了解进化算法和细胞自动机。

充分利用这本书

读者应配备以下环境配置:

  1. C++ 11(英特尔、IBM、Sun、苹果和微软,以及开源 GCC)
  2. Visual C++ 2017 社区版
  3. Windows 上的 VC++ 2017
  4. Linux 和 Mac 上的 GCC 7.0 或 Clang 5.0

如果您没有最新版本的编译器,或者您想尝试其他编译器,可以使用在线提供的编译器。虽然有各种各样的在线平台可以使用,但我推荐 GCC 和 Clang 的https://wandbox.org/,VC++ 的http://webcompiler.cloudapp.net/

在使用支持 C++ 17 的编译器时,您将需要一个所需库的完整列表。

如何为 Visual Studio 2017 生成项目

请执行以下操作,以生成面向 x86 平台的 Visual Studio 2017 项目:

  1. 打开命令提示符,转到源代码根文件夹中的build目录。

  2. 执行以下命令:

    cmake -G "Visual Studio 15 2017" .. -DCMAKE_USE_WINSSL=ON -DCURL_WINDOWS_SSPI=ON -DCURL_LIBRARY=libcurl -DCURL_INCLUDE_DIR=..\libs\curl\include -DBUILD_TESTING=OFF -DBUILD_CURL_EXE=OFF -DUSE_MANUAL=OFF

  3. 完成后,可以在build/cppchallenger.sln找到 Visual Studio 解决方案。

如果你想以 x64 平台为目标,可以使用名为"Visual Studio 15 2017 Win64"的生成器。Visual Studio 2017 15.4 同时支持filesystem(作为实验库)和std::optional。如果您使用以前的版本,或者只想使用 Boost 库,则可以在正确安装 Boost 后,使用以下命令生成项目:

cmake -G "Visual Studio 15 2017" .. -DCMAKE_USE_WINSSL=ON -DCURL_WINDOWS_SSPI=ON -DCURL_LIBRARY=libcurl -DCURL_INCLUDE_DIR=..\libs\curl\include -DBUILD_TESTING=OFF -DBUILD_CURL_EXE=OFF -DUSE_MANUAL=OFF -DBOOST_FILESYSTEM=ON -DBOOST_OPTIONAL=ON -DBOOST_INCLUDE_DIR=<path_to_headers> -DBOOST_LIB_DIR=<path_to_libs>

确保头文件和静态库文件的路径不包含尾随反斜杠(即\)。

下载示例代码文件

你可以从你在www.packt.com的账户下载这本书的示例代码文件。如果您在其他地方购买了这本书,您可以访问www.packt.com/support并注册将文件直接通过电子邮件发送给您。

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

  1. 登录或注册www.packt.com
  2. 选择“支持”选项卡。
  3. 点击代码下载和勘误表。
  4. 在搜索框中输入图书的名称,并按照屏幕指示进行操作。

下载文件后,请确保使用最新版本的解压缩文件夹:

  • 视窗系统的 WinRAR/7-Zip
  • zipeg/izp/un ARX for MAC
  • 适用于 Linux 的 7-Zip/PeaZip

这本书的代码包也托管在 GitHub 上,网址为。如果代码有更新,它将在现有的 GitHub 存储库中更新。

我们还有来自丰富的图书和视频目录的其他代码包,可在**【https://github.com/PacktPublishing/】**获得。看看他们!

下载彩色图像

我们还提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。可以在这里下载:https://www . packtpub . com/sites/default/files/downloads/Cplusplus _ Efficient _ and _ Scalable _ Application _ development . pdf

使用的约定

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟网址、用户输入和推特句柄如下所示:“作者打算键入c = a + 8 / b + 1;:,他们按下了逗号而不是/

代码块设置如下:

inline auto mult(int lhs, int rhs) -> int 
    { 
        return lhs * rhs; 
    }

当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:

if (op == ',' || op == '.' || op < '+' || op > '/') 
    { 
        cout << endl << "operator not recognized" << endl; 
        usage(); 
        return 1; 
    }

任何命令行输入或输出都编写如下:

C:\Beginning_C++ Chapter_02\cl /EHsc calc.cpp

粗体:新词、重要词以粗体显示。你在屏幕上看到的单词,例如在菜单或对话框中看到的单词,出现在这样的文本中:“函数的调用约定决定了是调用函数还是被调用函数有责任这样做。”

Warnings or important notes appear like this. Tips and tricks appear like this.

取得联系

我们随时欢迎读者的反馈。

一般反馈:如果你对这本书的任何方面有疑问,在你的信息主题中提到书名,发邮件给我们customercare@packtpub.com

勘误表:虽然我们已经尽了最大的努力来保证内容的准确性,但是错误还是会发生。如果你在这本书里发现了一个错误,如果你能向我们报告,我们将不胜感激。请访问www.packt.com/submit-errata,选择您的图书,点击勘误表提交链接,并输入详细信息。

盗版:如果您在互联网上遇到任何形式的我们作品的非法拷贝,如果您能提供我们的位置地址或网站名称,我们将不胜感激。请通过copyright@packt.com联系我们,并提供材料链接。

如果你有兴趣成为一名作者:如果有一个你有专长的话题,你有兴趣写或者投稿一本书,请访问authors.packtpub.com

复习

请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?然后,潜在的读者可以看到并使用您不带偏见的意见来做出购买决定,我们在 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们的书的反馈。谢谢大家!

更多关于 Packt 的信息,请访问packt.com