OSDN Git Service

style: format markdown files with remark-lint
author24OI-bot <15963390+24OI-bot@users.noreply.github.com>
Wed, 4 Sep 2019 21:52:19 +0000 (17:52 -0400)
committer24OI-bot <15963390+24OI-bot@users.noreply.github.com>
Wed, 4 Sep 2019 21:52:19 +0000 (17:52 -0400)
docs/lang/csl/algorithm.md
docs/lang/csl/index.md
docs/lang/csl/sequence-container.md
docs/lang/helloworld.md
docs/lang/reference.md

index 25512af..9a49c33 100644 (file)
@@ -1,17 +1,17 @@
-STL 提供了大约 100 个实现算法的模版函数,基本都包含在 `<algorithm>` 之中,还有一部分包含在 `<numeric>` 和 `<functional>` 。完备的函数列表请[参见参考手册](https://zh.cppreference.com/w/cpp/algorithm)
+STL 提供了大约 100 个实现算法的模版函数,基本都包含在 `<algorithm>` 之中,还有一部分包含在 `<numeric>` 和 `<functional>` 。完备的函数列表请 [参见参考手册](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())` 。
index 55fb0ab..adfc18b 100644 (file)
@@ -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/) 
index 2502cc8..d975048 100644 (file)
@@ -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<int> 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<int> 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<int> 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) 
index b4545ad..45da9c9 100644 (file)
@@ -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