OSDN Git Service

Merge remote-tracking branch 'origin/lang' into lang
authorJacob Zhong <cmpute@qq.com>
Thu, 5 Sep 2019 01:36:14 +0000 (21:36 -0400)
committerJacob Zhong <cmpute@qq.com>
Thu, 5 Sep 2019 01:36:14 +0000 (21:36 -0400)
1  2 
docs/lang/csl/index.md
docs/lang/csl/sequence-container.md

@@@ -1,15 -1,14 +1,14 @@@
  ## 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) )指的是重复发明已有的算法,或者重复编写现成优化过的代码。造轮子通常耗时耗力,同时效果还没有别人好。但若是为了学习或者练习,造轮子则是必要的。
@@@ -256,9 -261,9 +261,9 @@@ 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)
 +##  `forward_list` (C++11)
  
   `std::forward_list` 是 STL 提供的 [单向链表](../../ds/linked-list.md) 数据结构,相比于 `std::list` 减小了空间开销。