diff --git a/book/0-preface.md b/book/0-preface.md index 49a09a0..0a0a3d1 100644 --- a/book/0-preface.md +++ b/book/0-preface.md @@ -30,7 +30,7 @@ C++17 则是近三年依赖 C++ 社区一致推进的方向,也指出了**现 本书每章中都出现了大量的代码,如果你在跟随本书介绍特性的思路编写自己的代码遇到问题时,不妨读一读随书附上的源码,你可以在[这里](../code)中找到书中介绍过的全部的源码,所有代码按章节组织,文件夹名称为章节序号。 -[返回目录](./toc.md) | 上一章 | [下一章:迈向 C++11/14/17](./1-intro.md) +[返回目录](./toc.md) | 上一章 | [下一章:迈向 C++11/14/17](./01-intro.md) ## 许可 diff --git a/book/1-intro.md b/book/01-intro.md similarity index 99% rename from book/1-intro.md rename to book/01-intro.md index 7b84cff..1c5ff05 100644 --- a/book/1-intro.md +++ b/book/01-intro.md @@ -118,7 +118,7 @@ clean: 不必担心,本书的后续章节将为你介绍这一切。 -[返回目录](./toc.md) | [上一章](./0-preface.md) | [下一章:语言可用性强化](./2-usability.md) +[返回目录](./toc.md) | [上一章](./0-preface.md) | [下一章:语言可用性强化](./02-usability.md) ## 进一步阅读的参考文献 diff --git a/book/2-usability.md b/book/02-usability.md similarity index 99% rename from book/2-usability.md rename to book/02-usability.md index 529cd8e..5c4a873 100644 --- a/book/2-usability.md +++ b/book/02-usability.md @@ -444,7 +444,7 @@ std::cout << "q: " << q << std::endl; `decltype(auto)` 是 C++14 开始提供的一个略微复杂的用法。 -> 要理解它你需要知道 C++ 中参数转发的概念,我们会在[语言运行时强化](./3-runtime)一章中详细介绍,你可以到时再回来看这一小节的内容。 +> 要理解它你需要知道 C++ 中参数转发的概念,我们会在[语言运行时强化](./03-runtime.md)一章中详细介绍,你可以到时再回来看这一小节的内容。 简单来说,`decltype(auto)` 主要用于对转发函数或封装的返回类型进行推导,它使我们无需显式的指定 `decltype` 的参数表达式。考虑看下面的例子,当我们需要对下面两个函数进行封装时: @@ -947,7 +947,7 @@ std::cout << new_enum::value3 << std::endl > 参考答案[见此](../exercises/2)。 -[返回目录](./toc.md) | [上一章](./1-intro.md) | [下一章:运行时强化](./3-runtime.md) +[返回目录](./toc.md) | [上一章](./01-intro.md) | [下一章:运行时强化](./03-runtime.md) ## 进一步阅读的参考文献 diff --git a/book/3-runtime.md b/book/03-runtime.md similarity index 100% rename from book/3-runtime.md rename to book/03-runtime.md diff --git a/book/4-containers.md b/book/04-containers.md similarity index 100% rename from book/4-containers.md rename to book/04-containers.md diff --git a/book/5-pointers.md b/book/05-pointers.md similarity index 100% rename from book/5-pointers.md rename to book/05-pointers.md diff --git a/book/6-regex.md b/book/06-regex.md similarity index 100% rename from book/6-regex.md rename to book/06-regex.md diff --git a/book/7-thread.md b/book/07-thread.md similarity index 100% rename from book/7-thread.md rename to book/07-thread.md diff --git a/book/8-filesystem.md b/book/08-filesystem.md similarity index 100% rename from book/8-filesystem.md rename to book/08-filesystem.md diff --git a/book/9-others.md b/book/09-others.md similarity index 100% rename from book/9-others.md rename to book/09-others.md diff --git a/book/10-cpp20.md b/book/10-cpp20.md index 5a48e0e..5ec6c8e 100644 --- a/book/10-cpp20.md +++ b/book/10-cpp20.md @@ -24,8 +24,8 @@ ```cpp template -auto add(T t, U u) { -return t+u; + auto add(T t, U u) { + return t+u; } ``` @@ -35,10 +35,10 @@ return t+u; template class buffer_t { public: -T& alloc(); -void free(T& item); + T& alloc(); + void free(T& item); private: -T data[BufSize]; + T data[BufSize]; } buffer_t buf; // 100 作为模板参数 @@ -48,7 +48,7 @@ buffer_t buf; // 100 作为模板参数 ```cpp template void foo() { -return; + return; } foo<10>(); // value 被推导为 int 类型 @@ -64,16 +64,16 @@ C++17 正式将 `variant<>` 纳入标准库,摇身一变成为 `std::variant<> #include template std::variant _tuple_index(size_t i, const std::tuple& tpl) { -if (i == n) -return std::get(tpl); -else if (n == sizeof...(Args) - 1) -throw std::out_of_range("越界."); -else -return _tuple_index<(n < sizeof...(Args)-1 ? n+1 : 0)>(i, tpl); -} + if (i == n) + return std::get(tpl); + else if (n == sizeof...(Args) - 1) + throw std::out_of_range("越界."); + else + return _tuple_index<(n < sizeof...(Args)-1 ? n+1 : 0)>(i, tpl); + } template std::variant tuple_index(size_t i, const std::tuple& tpl) { -return _tuple_index<0>(i, tpl); + return _tuple_index<0>(i, tpl); } ``` @@ -91,9 +91,9 @@ C++ 组委会在讨论投票最终确定 C++17 有很多提案,诸如 **Concep #include #include int main() { -std::list l = {1, 2, 3}; -std::sort(l.begin(), l.end()); -return 0; + std::list l = {1, 2, 3}; + std::sort(l.begin(), l.end()); + return 0; } ``` diff --git a/book/toc.md b/book/toc.md index 16ec87c..4a39da4 100644 --- a/book/toc.md +++ b/book/toc.md @@ -5,11 +5,11 @@ ## 目录 - [**序言**](./0-preface.md) -- [**第 1 章 迈向 C++11/14/17**](./1-intro.md) +- [**第 1 章 迈向 C++11/14/17**](./01-intro.md) + 1.1 被弃用的特性 + 1.2 与 C 的兼容性 + 进一步阅读的参考文献 -- [**第二章 语言可用性的强化**](./2-usability.md) +- [**第二章 语言可用性的强化**](./02-usability.md) + 2.1 常量 - nullptr - constexpr @@ -40,7 +40,7 @@ - final - 显式禁用默认函数 - 强类型枚举 -- [**第三章 语言运行期的强化**](./3-runtime.md) +- [**第三章 语言运行期的强化**](./03-runtime.md) + lambda 表达式 + lambda 表达式基础 + 值捕获 @@ -56,7 +56,7 @@ + 右值引用和左值引用 + 移动语义 + 完美转发 -- [**第四章 标准库: 容器**](./4-containers.md) +- [**第四章 标准库: 容器**](./04-containers.md) + `std::array` + `std::forward_list` + `std::unordered_set` @@ -65,12 +65,12 @@ + 基本操作 + 运行期索引 + 合并与迭代 -- [**第五章 标准库: 指针**](./5-pointers.md) +- [**第五章 标准库: 指针**](./05-pointers.md) + RAII 与引用计数 + `std::shared_ptr` + `std::unique_ptr` + `std::weak_ptr` -- [**第六章 标准库: 正则表达式**](./6-regex.md) +- [**第六章 标准库: 正则表达式**](./06-regex.md) + 正则表达式简介 + 普通字符 + 特殊字符 @@ -79,15 +79,15 @@ + `std::regex` + `std::regex_match` + `std::match_results` -- [**第七章 标准库: 线程与并发**](./7-thread.md) +- [**第七章 标准库: 线程与并发**](./07-thread.md) + `std::thread` + `std::mutex` + `std::unique_lock` + `std::future` + `std::packaged_task` + `std::condition_variable` -- [**第八章 标准库: 文件系统**](./8-filesystem.md) -- [**第九章 其他杂项**](./9-others.md) +- [**第八章 标准库: 文件系统**](./08-filesystem.md) +- [**第九章 其他杂项**](./09-others.md) + 新类型 + `long long int` + `noexcept` 的修饰和操作