Loading docs/lang/csl/associative-container.md +22 −0 Original line number Diff line number Diff line Loading @@ -129,3 +129,25 @@ mp.erase(it) - `empty` 如果 `map` 为空则返回 `true` ,例如 `mp.empty()` 。 ## `multimap` 和 `map` 类似, `multimap` 是有序键值对容器,但允许多个元素拥有同一键。其搜索、插入操作拥有对数复杂度。删除单个元素在最坏情况下具有对数复杂度,均摊为常数复杂度。 !!! warning 正是因为 multimap 允许多个元素拥有同一键的特点,multimap 并没有提供给出键访问其对应值的方法。 ### 插入与删除操作 - 通过向 `multimap` 中插入一个类型为 `pair<Key, T>` 的值可以达到插入元素的目的,例如 `mp.insert(pair<string,int>("Alan",100));` ; - `erase(x)` : 删除键为 x 的 **所有** 元素,返回删除元素的个数。 - `erase(pos)` : 删除迭代器为 pos 的元素,要求迭代器必须合法。 - `erase(first,last)` : 删除迭代器在 $[first,last)$ 范围内的所有元素。 - `clear()` : 清空容器。 ### 查找操作 - `count(x)` : 返回容器内键为 x 的元素数量。复杂度为 $O(\log(size)+ans)$ (关于容器大小对数复杂度,加上匹配个数)。 - `find(x)` : 若容器内存在键为 x 的元素,会返回该元素的迭代器(如果有多个键为 x 的元素会返回任意一个);否则返回 `end()` 。 - `lower_bound(x)` : 返回指向首个不小于给定键的元素的迭代器。 - `upper_bound(x)` : 返回指向首个大于给定键的元素的迭代器。若容器内所有元素均小于或等于给定键,返回 `end()` 。 - `empty()` : 返回容器是否为空。 - `size()` : 返回容器内元素个数。 Loading
docs/lang/csl/associative-container.md +22 −0 Original line number Diff line number Diff line Loading @@ -129,3 +129,25 @@ mp.erase(it) - `empty` 如果 `map` 为空则返回 `true` ,例如 `mp.empty()` 。 ## `multimap` 和 `map` 类似, `multimap` 是有序键值对容器,但允许多个元素拥有同一键。其搜索、插入操作拥有对数复杂度。删除单个元素在最坏情况下具有对数复杂度,均摊为常数复杂度。 !!! warning 正是因为 multimap 允许多个元素拥有同一键的特点,multimap 并没有提供给出键访问其对应值的方法。 ### 插入与删除操作 - 通过向 `multimap` 中插入一个类型为 `pair<Key, T>` 的值可以达到插入元素的目的,例如 `mp.insert(pair<string,int>("Alan",100));` ; - `erase(x)` : 删除键为 x 的 **所有** 元素,返回删除元素的个数。 - `erase(pos)` : 删除迭代器为 pos 的元素,要求迭代器必须合法。 - `erase(first,last)` : 删除迭代器在 $[first,last)$ 范围内的所有元素。 - `clear()` : 清空容器。 ### 查找操作 - `count(x)` : 返回容器内键为 x 的元素数量。复杂度为 $O(\log(size)+ans)$ (关于容器大小对数复杂度,加上匹配个数)。 - `find(x)` : 若容器内存在键为 x 的元素,会返回该元素的迭代器(如果有多个键为 x 的元素会返回任意一个);否则返回 `end()` 。 - `lower_bound(x)` : 返回指向首个不小于给定键的元素的迭代器。 - `upper_bound(x)` : 返回指向首个大于给定键的元素的迭代器。若容器内所有元素均小于或等于给定键,返回 `end()` 。 - `empty()` : 返回容器是否为空。 - `size()` : 返回容器内元素个数。