From: Jacob Zhong Date: Thu, 5 Sep 2019 01:36:14 +0000 (-0400) Subject: Merge remote-tracking branch 'origin/lang' into lang X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=65504031bc1838d1d7dcf5a5cb23eb1dc514915e;p=oi-wiki%2Fmain.git Merge remote-tracking branch 'origin/lang' into lang --- 65504031bc1838d1d7dcf5a5cb23eb1dc514915e diff --cc docs/lang/csl/index.md index adb4bf4b,adfc18b8..7fa76004 --- a/docs/lang/csl/index.md +++ b/docs/lang/csl/index.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) )指的是重复发明已有的算法,或者重复编写现成优化过的代码。造轮子通常耗时耗力,同时效果还没有别人好。但若是为了学习或者练习,造轮子则是必要的。 diff --cc docs/lang/csl/sequence-container.md index ea68d318,d9750484..ac9118d6 --- a/docs/lang/csl/sequence-container.md +++ b/docs/lang/csl/sequence-container.md @@@ -256,9 -261,9 +261,9 @@@ 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) +## `forward_list` (C++11) `std::forward_list` 是 STL 提供的 [单向链表](../../ds/linked-list.md) 数据结构,相比于 `std::list` 减小了空间开销。