From f11d39b0f722872727d179609ee6f302e0ec9ce7 Mon Sep 17 00:00:00 2001 From: 24OI-bot <15963390+24OI-bot@users.noreply.github.com> Date: Mon, 5 Aug 2019 11:19:01 -0400 Subject: [PATCH] style: format markdown files with remark-lint --- docs/lang/csl/sequence-container.md | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/docs/lang/csl/sequence-container.md b/docs/lang/csl/sequence-container.md index 4811bc9a..9a003147 100644 --- a/docs/lang/csl/sequence-container.md +++ b/docs/lang/csl/sequence-container.md @@ -1,14 +1,14 @@ author: MingqiHuang, Xeonacid, greyqz, i-Yirannn -## `array` +## `array` -## `vector` +## `vector` -### 为什么要用 `vector` +### 为什么要用 `vector` 作为 OIer,对程序效率的追求远比对工程级别的稳定性要高得多,而 `vector` 由于其较静态数组复杂很多的原因,时间效率在大部分情况下都要低于静态数组,所以在正常存储数据的时候,我们是不选择 `vector` 的,下面给出几个 `vector` 优秀的特性,在需要用到这些特性的情况下, `vector` 能给我们带来很大的帮助。 -#### `vector` 可以动态增长 +#### `vector` 可以动态增长 很多时候我们不能提前开好那么大的空间(eg:预处理 1~n 中所有数的约数)我们知道数据总量在空间允许的级别,但是单份数据还可能非常大,这种时候我们就需要 `vector` 来把内存占用量控制在合适的范围内。 @@ -16,14 +16,13 @@ author: MingqiHuang, Xeonacid, greyqz, i-Yirannn vector 以字典序为关键字重载了六个比较运算符,这使得我们可以方便的判断两个容器是否相等。(复杂度与容器大小成线性关系) - #### `vector` 可以用赋值运算符来进行初始化 由于 `vector` 重载了 `=` 运算符,所以我们可以方便的初始化。 ### `vector` 的构造函数 -参见如下代码(假设你已经 `using` 了 `std::vector`,`std::cout`,`std::endl` 与 `std::ostream_iterator`): +参见如下代码(假设你已经 `using` 了 `std::vector` , `std::cout` , `std::endl` 与 `std::ostream_iterator` ): ```cpp // 1. 创建空vector v0; 常数复杂度 @@ -68,23 +67,23 @@ cout << endl; `vector` 提供了如下几种方法进行访问元素 -1. `at()` +1. `at()` 使用方法: `v.at(pos)` 返回 vector 中下标为 `pos` 的引用。如果数组越界抛出 `std::out_of_range` 类型的异常。 -2. `operator[]` +2. `operator[]` 使用方法: `v[pos]` 返回 vector 中下标为 `pos` 的引用。不执行越界检查。 -3. `front()` +3. `front()` 使用方法: `v.front()` 返回首元素的引用。 -4. `back()` +4. `back()` 使用方法: `v.back()` 返回末尾元素的引用。 -5. `data()` +5. `data()` 使用方法: `v.data()` 返回指向数组第一个元素的指针。 @@ -92,19 +91,19 @@ cout << endl; vector 提供了如下几种迭代器 -1. `begin()/cbegin()` +1. `begin()/cbegin()` 返回指向首元素的迭代器,其中 `*begin = front` 。 -2. `end()/cend()` +2. `end()/cend()` 返回指向数组尾端占位符的迭代器,注意是没有元素的。 -3. `rbegin()/rcbegin()` +3. `rbegin()/rcbegin()` 返回指向逆向数组的首元素的逆向迭代器,可以理解为正向容器的末元素。 -4. `rend()/rcend()` +4. `rend()/rcend()` 返回指向逆向数组末元素后一位置的迭代器,对应容器首的前一个位置,没有元素。 @@ -114,11 +113,11 @@ vector 提供了如下几种迭代器 `vector` 有如下几种返回容量的函数 -1. `empty()` +1. `empty()` 返回一个 `bool` 值,即 `v.begin() == v.end()` , `true` 为空, `false` 为非空。 -2. `size()` +2. `size()` 返回一个元素数量,即 `std::distance(v.begin(), v.end())` 。 @@ -131,13 +130,13 @@ vector 提供了如下几种迭代器 ### `vector` 修改 - `clear()` 清除所有元素 -- `insert()` 支持在某个迭代器位置插入元素、可以插入多个 **此操作是与 `pos` 距离末尾长度成线性而非常数的** +- `insert()` 支持在某个迭代器位置插入元素、可以插入多个 **此操作是与 `pos` 距离末尾长度成线性而非常数的** - `erase()` 删除某个迭代器或者区间的元素,返回最后被删除的迭代器。 - `push_back()` 在末尾插入一个元素。 - `pop_back()` 删除末尾元素。 - `swap()` 与另一个容器进行交换,此操作是 **常数复杂度** 而非线性的。 -### `vector` 特化 `vector` +### `vector` 特化 `vector` 标准库提供对 `bool` 的 `vector` 优化,其空间占用与 `bitset` 一样,每个 `bool` 只占 1 bit,且支持动态内存。 -- 2.11.0