From ef2837f87155711786994cd0d60aa4c707da8074 Mon Sep 17 00:00:00 2001 From: 24OI-bot <15963390+24OI-bot@users.noreply.github.com> Date: Wed, 4 Sep 2019 17:52:19 -0400 Subject: [PATCH] style: format markdown files with remark-lint --- docs/lang/csl/algorithm.md | 14 +++++++------- docs/lang/csl/index.md | 17 ++++++++--------- docs/lang/csl/sequence-container.md | 15 ++++++++++----- docs/lang/helloworld.md | 2 +- docs/lang/reference.md | 1 + 5 files changed, 27 insertions(+), 22 deletions(-) diff --git a/docs/lang/csl/algorithm.md b/docs/lang/csl/algorithm.md index 25512afa..9a49c33d 100644 --- a/docs/lang/csl/algorithm.md +++ b/docs/lang/csl/algorithm.md @@ -1,17 +1,17 @@ -STL 提供了大约 100 个实现算法的模版函数,基本都包含在 `` 之中,还有一部分包含在 `` 和 `` 。完备的函数列表请[参见参考手册](https://zh.cppreference.com/w/cpp/algorithm) +STL 提供了大约 100 个实现算法的模版函数,基本都包含在 `` 之中,还有一部分包含在 `` 和 `` 。完备的函数列表请 [参见参考手册](https://zh.cppreference.com/w/cpp/algorithm) ## 普通操作 -- `find` :顺序查找。`find(v.begin(), v.end(), value)` ,其中 `value` 为需要查找的值。 -- `find_end` :逆序查找。`find_end(v.begin(), v.end(), value)` 。 +- `find` :顺序查找。 `find(v.begin(), v.end(), value)` ,其中 `value` 为需要查找的值。 +- `find_end` :逆序查找。 `find_end(v.begin(), v.end(), value)` 。 - `reverse` :翻转数组、字符串。 `reverse(v.begin(), v.end())` 或 `reverse(a + begin, a + end)` 。 -- `unique` :去除容器中相邻的重复元素。`unique(v.begin(), v.end())` 或 `unique(a + begin, a + end)` 。与 `sort` 结合使用可以实现完整容器去重。 +- `unique` :去除容器中相邻的重复元素。 `unique(v.begin(), v.end())` 或 `unique(a + begin, a + end)` 。与 `sort` 结合使用可以实现完整容器去重。 - `random_shuffle` :随机地打乱数组。 `random_shuffle(v.begin(), v.end())` 或 `random_shuffle(v + begin, v + end)` 。 ## 排序相关 - `sort` :排序。 `sort(v.begin(), v.end(), cmp)` 或 `sort(a + begin, a + end, cmp)` ,其中 `end` 是排序的数组最后一个元素的后一位, `cmp` 为自定义的比较函数。 -- `stable_sort` :稳定排序, 用法同 `sort()` +- `stable_sort` :稳定排序,用法同 `sort()` - `nth_element` :按指定范围进行分类,即找出序列中第 $n$ 大的元素,使其左边均为小于它的数,右边均为大于它的数。 `nth_element(v.begin(), v.begin() + mid, v.end(), cmp)` 或 `nth_element(a + begin, a + begin + mid, a + end, cmp)` 。复杂度 $O(n)$ 。 -- `binary_search` :二分查找。`binary_search(v.begin(), v.end(), value)` ,其中 `value` 为需要查找的值。 -- `merge` :将两个(已排序的)序列合并。`merge(v1.begin(), v1.end(), v2.begin(), v2.end())` 。 +- `binary_search` :二分查找。 `binary_search(v.begin(), v.end(), value)` ,其中 `value` 为需要查找的值。 +- `merge` :将两个(已排序的)序列合并。 `merge(v1.begin(), v1.end(), v2.begin(), v2.end())` 。 diff --git a/docs/lang/csl/index.md b/docs/lang/csl/index.md index 55fb0aba..adfc18b8 100644 --- a/docs/lang/csl/index.md +++ b/docs/lang/csl/index.md @@ -1,27 +1,26 @@ - ## C++ 标准 -首先需要介绍的是 C++ 本身的版本。由于 C++ 本身只是一门语言,而不同的编译器对 C++ 的实现方法各不一致,因此需要标准化来约束编译器的实现,使得 C++ 代码在不同的编译器下表现一致。C++ 自1985年诞生以来,一共由国际标准化组织( ISO )发布了 5 个正式的 C++ 标准,分别为 C++ 98、C++ 03、C++ 11 (亦称 C++ 0x)、C++ 14 (亦称 C++1y)、C++ 17 (亦称 C++ 1z),最新的标准 C++ 20 仍在制定中。此外还有一些补充标准,例如 C++ TR1。 +首先需要介绍的是 C++ 本身的版本。由于 C++ 本身只是一门语言,而不同的编译器对 C++ 的实现方法各不一致,因此需要标准化来约束编译器的实现,使得 C++ 代码在不同的编译器下表现一致。C++ 自 1985 年诞生以来,一共由国际标准化组织(ISO)发布了 5 个正式的 C++ 标准,分别为 C++ 98、C++ 03、C++ 11(亦称 C++ 0x)、C++ 14(亦称 C++1y)、C++ 17(亦称 C++ 1z),最新的标准 C++ 20 仍在制定中。此外还有一些补充标准,例如 C++ TR1。 每一个版本的 C++ 标准不仅规定了 C++ 的语法、语言特性,还规定了一套 C++ 内置库的实现规范,这个库便是 C++ 标准库。C++ 标准库中包含大量常用代码的实现,如输入输出、基本数据结构、内存管理、多线程支持等。掌握 C++ 标准库是编写更现代的 C++ 代码必要的一步。C++ 标准库的详细文档在 [cppreference](https://zh.cppreference.com/) 网站上,文档对标准库中的类型函数的用法、效率、注意事项等都有介绍,请善用。 -需要指出的是,不同的 OJ 平台对 C++ 版本均不相同,例如[最新的 ACM 比赛规则](https://icpc.baylor.edu/worldfinals/programming-environment)支持 C++ 14 标准,而 [NOI 现行规则](http://www.noi.cn/newsview.html?id=559&hash=E4E249) 中指定的 g++ 4.8 [默认支持标准](https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/Standards.html#Standards)是 C++ 98。因此在学习 C++ 时要注意比赛支持的标准,避免在赛场上时编译报错。 +需要指出的是,不同的 OJ 平台对 C++ 版本均不相同,例如 [最新的 ACM 比赛规则](https://icpc.baylor.edu/worldfinals/programming-environment) 支持 C++ 14 标准,而 [NOI 现行规则](http://www.noi.cn/newsview.html?id=559&hash=E4E249) 中指定的 g++ 4.8 [默认支持标准](https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/Standards.html#Standards) 是 C++ 98。因此在学习 C++ 时要注意比赛支持的标准,避免在赛场上时编译报错。 -## 标准模板库( STL ) +## 标准模板库(STL) -STL 即标准模板库(Standard Template Library),是 C++ 标准库的一部分,里面包含了一些模板化的通用的数据结构和算法。由于其模板化的特点,它能够兼容自定义的数据类型,避免大量的造轮子工作。NOI 和 ACM 赛事都支持STL库的使用,因此合理利用 STL 可以避免编写无用算法,并且充分利用编译器对模板库优化提高效率。STL 库的详细介绍请参见对应的页面: [STL 容器](./container.md)和 [STL 算法](./algorithm.md)。 +STL 即标准模板库(Standard Template Library),是 C++ 标准库的一部分,里面包含了一些模板化的通用的数据结构和算法。由于其模板化的特点,它能够兼容自定义的数据类型,避免大量的造轮子工作。NOI 和 ACM 赛事都支持 STL 库的使用,因此合理利用 STL 可以避免编写无用算法,并且充分利用编译器对模板库优化提高效率。STL 库的详细介绍请参见对应的页面: [STL 容器](./container.md) 和 [STL 算法](./algorithm.md) 。 ??? note "什么是造轮子" 造轮子( [Reinventing_the_wheel](https://en.wikipedia.org/wiki/Reinventing_the_wheel) )指的是重复发明已有的算法,或者重复编写现成优化过的代码。造轮子通常耗时耗力,同时效果还没有别人好。但若是为了学习或者练习,造轮子则是必要的。 ## Boost 库 -[Boost](https://www.boost.org/) 是除了标准库外,另一个可移植的、高质量、高性能、高可靠性的 C++ 工具库。Boost 中的模块数量非常之大,并且拥有完备的跨平台支持,因此被看作 C++ 的准标准库。C++ 标准中的不少特性也都来自于 Boost,如智能指针、元编程、日期和时间等。尽管在 OI 中无法使用 Boost ,但是 Boost 中有不少轮子可以用来验证算法或者对拍,如 Boost.Geometry 有 R 树的实现, Boost.Graph 有图的相关算法, Boost.Intrusive 则提供了一套与 STL 容器用法相似的侵入式容器。 + [Boost](https://www.boost.org/) 是除了标准库外,另一个可移植的、高质量、高性能、高可靠性的 C++ 工具库。Boost 中的模块数量非常之大,并且拥有完备的跨平台支持,因此被看作 C++ 的准标准库。C++ 标准中的不少特性也都来自于 Boost,如智能指针、元编程、日期和时间等。尽管在 OI 中无法使用 Boost,但是 Boost 中有不少轮子可以用来验证算法或者对拍,如 Boost.Geometry 有 R 树的实现,Boost.Graph 有图的相关算法,Boost.Intrusive 则提供了一套与 STL 容器用法相似的侵入式容器。 ## 参考资料 1. [C++ reference](https://en.cppreference.com/) 2. [C++ 参考手册](https://zh.cppreference.com/) -3. [维基百科 - C++](https://zh.wikipedia.org/wiki/C%2B%2B) -4. [Boost 官方网站](https://www.boost.org/) -5. [Boost 教程网站](https://theboostcpplibraries.com/) +3. [维基百科 - C++](https://zh.wikipedia.org/wiki/C%2B%2B) +4. [Boost 官方网站](https://www.boost.org/) +5. [Boost 教程网站](https://theboostcpplibraries.com/) diff --git a/docs/lang/csl/sequence-container.md b/docs/lang/csl/sequence-container.md index 2502cc85..d9750484 100644 --- a/docs/lang/csl/sequence-container.md +++ b/docs/lang/csl/sequence-container.md @@ -126,14 +126,19 @@ vector 提供了如下几种 [迭代器](./iterator.md) **与长度相关** : - `empty()` 返回一个 `bool` 值,即 `v.begin() == v.end()` , `true` 为空, `false` 为非空。 + - `size()` 返回容器长度(元素数量),即 `std::distance(v.begin(), v.end())` 。 + - `resize()` 改变 `vector` 的长度,多退少补。补充元素可以由参数指定。 + - `max_size()` 返回容器的最大可能长度。 - **与容量相关** : + **与容量相关** : - `reserve()` 使得 `vector` 预留一定的内存空间,避免不必要的内存拷贝。 + - `capacity()` 返回容器的容量,即不发生拷贝的情况下容器的长度上限。 + - `shrink_to_fit()` 使得 `vector` 的容量与长度一致,多退但不会少。 ### 元素增删及修改 @@ -184,7 +189,7 @@ for (int i = 0; i != arr.size(); ++i) cout << arr[i] << " "; ### `deque` 的使用方法 -以下介绍常用用法,详细内容 [请参见 C++ 文档](https://zh.cppreference.com/w/cpp/container/deque) 。`deque` 的迭代器函数与 `vector` 相同,因此不作详细介绍。 +以下介绍常用用法,详细内容 [请参见 C++ 文档](https://zh.cppreference.com/w/cpp/container/deque) 。 `deque` 的迭代器函数与 `vector` 相同,因此不作详细介绍。 #### 构造函数 @@ -245,7 +250,7 @@ deque v5(std::move(v2)); ### `list` 的使用方法 -`list` 的使用方法与 `deque` 基本相同,但是增删操作和访问的复杂度不同。详细内容 [请参见 C++ 文档](https://zh.cppreference.com/w/cpp/container/list) 。`list` 的迭代器、长度、元素增删及修改相关的函数与 `deque` 相同,因此不作详细介绍。 + `list` 的使用方法与 `deque` 基本相同,但是增删操作和访问的复杂度不同。详细内容 [请参见 C++ 文档](https://zh.cppreference.com/w/cpp/container/list) 。 `list` 的迭代器、长度、元素增删及修改相关的函数与 `deque` 相同,因此不作详细介绍。 #### 元素访问 @@ -256,7 +261,7 @@ deque v5(std::move(v2)); #### 操作 -`list` 类型还提供了一些针对其特性实现的 STL 算法函数。由于这些算法需要[随机访问迭代器](./iterator.md),因此`list`提供了特别的实现以便于使用。这些算法有`splice()`、`remove()`、`sort()`、`unique()`、`merge()`等。 + `list` 类型还提供了一些针对其特性实现的 STL 算法函数。由于这些算法需要 [随机访问迭代器](./iterator.md) ,因此 `list` 提供了特别的实现以便于使用。这些算法有 `splice()` 、 `remove()` 、 `sort()` 、 `unique()` 、 `merge()` 等。 ## `forward_list` (C++ 11) @@ -264,4 +269,4 @@ deque v5(std::move(v2)); ### `forward_list` 的使用方法 -`forward_list` 的使用方法与 `list` 几乎一致,但是迭代器只有单向的,因此其具体用法不作详细介绍。详细内容 [请参见 C++ 文档](https://zh.cppreference.com/w/cpp/container/forward_list) + `forward_list` 的使用方法与 `list` 几乎一致,但是迭代器只有单向的,因此其具体用法不作详细介绍。详细内容 [请参见 C++ 文档](https://zh.cppreference.com/w/cpp/container/forward_list) diff --git a/docs/lang/helloworld.md b/docs/lang/helloworld.md index b4545ad6..45da9c97 100644 --- a/docs/lang/helloworld.md +++ b/docs/lang/helloworld.md @@ -12,7 +12,7 @@ IDE 操作较为简单,一般入门玩家会选用 IDE 来编写代码。在 #### Windows -推荐使用 GNU 编译器。需要去 [MinGW Distro](https://nuwen.net/mingw.html) 下载 MinGW 并安装。此外 Windows 下也可以选择 [Microsoft Visual C++ 编译器](https://docs.microsoft.com/en-us/cpp/build/projects-and-build-systems-cpp),也需要去 [Visual Studio 页面](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019)下载安装。 +推荐使用 GNU 编译器。需要去 [MinGW Distro](https://nuwen.net/mingw.html) 下载 MinGW 并安装。此外 Windows 下也可以选择 [Microsoft Visual C++ 编译器](https://docs.microsoft.com/en-us/cpp/build/projects-and-build-systems-cpp) ,也需要去 [Visual Studio 页面](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019) 下载安装。 #### macOS diff --git a/docs/lang/reference.md b/docs/lang/reference.md index e69de29b..8b137891 100644 --- a/docs/lang/reference.md +++ b/docs/lang/reference.md @@ -0,0 +1 @@ + -- 2.11.0