- C 标准库
- C 标准库
- C++ 标准库
- C++ 库 - 首页
- C++ 库 - <fstream>
- C++ 库 - <iomanip>
- C++ 库 - <ios>
- C++ 库 - <iosfwd>
- C++ 库 - <iostream>
- C++ 库 - <istream>
- C++ 库 - <ostream>
- C++ 库 - <sstream>
- C++ 库 - <streambuf>
- C++ 库 - <atomic>
- C++ 库 - <complex>
- C++ 库 - <exception>
- C++ 库 - <functional>
- C++ 库 - <limits>
- C++ 库 - <locale>
- C++ 库 - <memory>
- C++ 库 - <new>
- C++ 库 - <numeric>
- C++ 库 - <regex>
- C++ 库 - <stdexcept>
- C++ 库 - <string>
- C++ 库 - <thread>
- C++ 库 - <tuple>
- C++ 库 - <typeinfo>
- C++ 库 - <utility>
- C++ 库 - <valarray>
- C++ STL 库
- C++ 库 - <array>
- C++ 库 - <bitset>
- C++ 库 - <deque>
- C++ 库 - <forward_list>
- C++ 库 - <list>
- C++ 库 - <map>
- C++ 库 - <multimap>
- C++ 库 - <queue>
- C++ 库 - <priority_queue>
- C++ 库 - <set>
- C++ 库 - <stack>
- C++ 库 - <unordered_map>
- C++ 库 - <unordered_set>
- C++ 库 - <vector>
- C++ 库 - <algorithm>
- C++ 库 - <iterator>
- C++ 高级库
- C++ 库 - <any>
- C++ 库 - <barrier>
- C++ 库 - <bit>
- C++ 库 - <chrono>
- C++ 库 - <cinttypes>
- C++ 库 - <clocale>
- C++ 库 - <condition_variable>
- C++ 库 - <coroutine>
- C++ 库 - <cstdlib>
- C++ 库 - <cstring>
- C++ 库 - <cuchar>
- C++ 库 - <charconv>
- C++ 库 - <cfenv>
- C++ 库 - <cmath>
- C++ 库 - <ccomplex>
- C++ 库 - <expected>
- C++ 库 - <format>
- C++ 库 - <future>
- C++ 库 - <flat_set>
- C++ 库 - <flat_map>
- C++ 库 - <filesystem>
- C++ 库 - <generator>
- C++ 库 - <initializer_list>
- C++ 库 - <latch>
- C++ 库 - <memory_resource>
- C++ 库 - <mutex>
- C++ 库 - <mdspan>
- C++ 库 - <optional>
- C++ 库 - <print>
- C++ 库 - <ratio>
- C++ 库 - <scoped_allocator>
- C++ 库 - <semaphore>
- C++ 库 - <source_location>
- C++ 库 - <span>
- C++ 库 - <spanstream>
- C++ 库 - <stacktrace>
- C++ 库 - <stop_token>
- C++ 库 - <syncstream>
- C++ 库 - <system_error>
- C++ 库 - <string_view>
- C++ 库 - <stdatomic>
- C++ 库 - <variant>
- C++ STL 库速查表
- C++ STL - 速查表
C++ 库 - <map>
map 简介
Map 是一种类似字典的数据结构。它是一系列 (键, 值) 对的序列,其中每个唯一的键只关联一个值。它通常被称为关联数组.
在 map 中,键值通常用于对元素进行排序。对于 map,键和值的类型可以不同,表示为
typedef pair<const Key, T> value_type;
Map 通常以二叉搜索树的形式实现。
零大小的 map 也是有效的。在这种情况下,map.begin() 和 map.end() 指向相同的位置。
定义
以下是来自 <map> 头文件的 std::map 的定义
template < class Key, class T, class Compare = less<Key>, class Alloc = allocator<pair<const Key,T> > > class map;
参数
Key - 键的类型。
T - 映射值的类型。
Compare - 一个二元谓词,它接受两个元素键作为参数并返回一个布尔值。
Alloc - 分配器对象的类型。
T 可以替换为任何其他数据类型,包括用户定义的类型。
成员类型
以下成员类型可以用作成员函数的参数或返回值类型。
序号 | 成员类型 | 定义 |
---|---|---|
1 | key_type | Key(模板的第一个参数) |
2 | mapped_type | T(模板的第二个参数) |
3 | key_compare | Compare(模板的第三个参数) |
4 | allocator_type | Alloc(模板的第四个参数) |
5 | value_type | pair<const key_type,mapped_type> |
6 | value_compare | 嵌套函数类,用于比较元素 |
7 | reference | allocator_type::reference |
8 | const_reference | allocator_type::const_reference |
9 | pointer | allocator_type::pointer |
10 | const_pointer | allocator_type::const_pointer |
11 | iterator | 双向迭代器到value_type |
12 | const_iterator | 双向迭代器到常量value_type |
13 | reverse_iterator | 反向迭代器 |
14 | const_reverse_iterator | 常量反向迭代器 |
15 | difference_type | ptrdiff_t |
16 | size_type | size_t |
来自 <map> 的函数
以下是来自 <map> 头文件的所有方法列表。
构造函数
序号 | 方法 & 描述 |
---|---|
1 | map::map 默认构造函数
构造一个包含零个元素的空 map。 |
2 | map::map 范围构造函数
构造一个 map,其元素数量与first到last. |
3 | map::map 复制构造函数
构造一个 map,其中包含现有 map 中每个元素的副本。 |
4 | map::map 移动构造函数
使用移动语义构造一个包含其他内容的 map。 |
5 | map::map 初始化列表构造函数 从初始化列表构造一个 map。 |
析构函数
序号 | 方法 & 描述 |
---|---|
1 | map::~map
通过释放其内存来销毁 map 对象。 |
成员函数
序号 | 方法 & 描述 |
---|---|
1 | map::at
返回与键关联的映射值的引用k. |
2 | map::begin
返回一个迭代器,该迭代器引用 map 的第一个元素。 |
3 | map::cbegin
返回一个常量迭代器,该迭代器引用 map 的第一个元素。 |
4 | map::cend
返回一个指向超出末尾map 的元素。 |
5 | map::clear
通过删除所有元素并将其大小设置为零来销毁 map。 |
6 | map::count
返回与键关联的映射值的个数k. |
7 | map::crbegin
返回一个常量反向迭代器,该迭代器指向容器 i 的最后一个元素。 |
8 | map::crend
返回一个常量反向迭代器,该迭代器指向容器 i 中第一个元素之前的理论元素。 |
9 | map::emplace
通过插入新元素扩展容器。 |
10 | map::emplace_hint 提示版本 使用提示作为元素的位置在 map 中插入一个新元素。 |
11 | map::empty
测试 map 是否为空。 |
12 | map::end
返回一个指向超出末尾map 中的元素。 |
13 | map::equal_range
返回与特定键匹配的元素范围。 |
14 | map::erase 位置版本 从position. |
15 | map::erase 位置版本 从position. |
16 | map::erase key 删除与键关联的映射值k. |
17 | map::erase 范围版本 从 map 中删除元素范围。 |
18 | map::erase 范围版本 从 map 中删除元素范围。 |
19 | map::find
查找与键关联的元素k. |
20 | map::get_allocator
返回与 map 关联的分配器。 |
21 | map::insert 单个元素 通过在 map 中插入新元素扩展容器。 |
22 | map::insert 提示版本 通过在 map 中插入新元素扩展容器。 |
23 | map::insert 范围版本 通过在 map 中插入新元素扩展容器。 |
24 | map::insert 移动提示版本 通过插入新元素扩展 map。 |
25 | map::insert 初始化列表版本 从初始化列表扩展 map,插入新元素。 |
26 | map::key_comp
返回一个比较键的函数对象,它是此容器的构造函数参数的副本comp. |
27 | map::lower_bound
返回一个指向第一个不小于键的元素的迭代器k. |
28 | map::max_size
返回 map 可以容纳的最大元素数。 |
29 | map::operator= 复制版本 通过替换旧内容为 map 分配新内容,并在必要时修改大小。 |
30 | map::operator= 移动版本 将一个 map 的内容移动到另一个 map 中,并在必要时修改大小。 |
31 | map::operator= 初始化列表版本 将初始化列表中的元素复制到 map 中。 |
32 | map::operator[] 复制版本 如果键k与容器中的元素匹配,则方法返回对该元素的引用。 |
33 | map::operator[] 移动版本 如果键k与容器中的元素匹配,则方法返回对该元素的引用。 |
34 | map::rbegin
返回一个指向 map 的最后一个元素的反向迭代器。 |
35 | map::rend
返回一个指向 map 的反向末尾的反向迭代器 i。 |
36 | map::size
返回 map 中存在的元素数。 |
37 | map::swap
将 map 的内容与 map x 的内容交换。 |
38 | map::upper_bound
返回一个指向第一个大于键的元素的迭代器k. |
39 | map::value_comp
返回一个比较类型对象的函数对象std::map::value_type. |
非成员重载函数
序号 | 方法 & 描述 |
---|---|
1 | operator==
测试两个 map 是否相等。 |
2 | operator!= 测试两个 map 是否相等。 |
3 | operator< 测试第一个 map 是否小于另一个 map。 |
4 | map::operator<= 测试第一个 map 是否小于或等于另一个 map。 |
5 | operator>
测试第一个 map 是否大于另一个 map。 |
6 | operator>=
测试第一个 map 是否大于或等于另一个 map。 |
7 | swap()
将 map 的内容与 map x 的内容交换。 |
multimap 简介
Multimap 是一种类似字典的数据结构。它是一系列(键, 值)对,其中多个值可以与等效键关联。它通常被称为关联数组.
在 multimap 中,键值通常用于对元素进行排序。对于 multimap,键和值的类型可以不同,表示为
typedef pair<const Key, T> value_type;
Multimap 通常以二叉搜索树的形式实现。
零大小的 multimap 也是有效的。在这种情况下,multimap.begin() 和 multimap.end() 指向相同的位置。
定义
以下是来自 <multimap> 头文件的 std::multimap 的定义
template < class Key, class T, class Compare = less<Key>, class Alloc = allocator<pair<const Key,T> > > class multimap;
参数
Key - 键的类型。
T - 映射值的类型。
Compare - 一个二元谓词,它接受两个元素键作为参数并返回一个布尔值。
Alloc - 分配器对象的类型。
T 可以替换为任何其他数据类型,包括用户定义的类型。
成员类型
以下成员类型可以用作成员函数的参数或返回值类型。
序号 | 成员类型 | 定义 |
---|---|---|
1 | key_type | Key(模板的第一个参数) |
2 | mapped_type | T(模板的第二个参数) |
3 | key_compare | Compare(模板的第三个参数) |
4 | allocator_type | Alloc(模板的第四个参数) |
5 | value_type | pair<const key_type,mapped_type> |
6 | value_compare | 嵌套函数类,用于比较元素 |
7 | reference | allocator_type::reference |
8 | const_reference | allocator_type::const_reference |
9 | pointer | allocator_type::pointer |
10 | const_pointer | allocator_type::const_pointer |
11 | iterator | 双向迭代器到value_type |
12 | const_iterator | 双向迭代器到常量value_type |
13 | reverse_iterator | 反向迭代器 |
14 | const_reverse_iterator | 常量反向迭代器 |
15 | difference_type | ptrdiff_t |
16 | size_type | size_t |
来自 <multimap> 的函数
以下是来自 <multimap> 头文件的所有方法列表。
构造函数
序号 | 方法 & 描述 |
---|---|
1 | multimap::multimap 默认构造函数 构造一个包含零个元素的空 multimap。 |
2 | multimap::multimap 范围构造函数 构造一个 multimap,其元素数量与first到last. |
3 | multimap::multimap 复制构造函数 构造一个 multimap,其中包含现有 multimap 中每个元素的副本。 |
4 | multimap::multimap 移动构造函数 使用移动语义构造一个包含其他内容的 multimap。 |
5 | multimap::multimap 初始化列表构造函数 从初始化列表构造一个 multimap。 |
析构函数
序号 | 方法 & 描述 |
---|---|
1 | multimap::~multimap
通过释放其内存来销毁 multimap 对象。 |
成员函数
序号 | 方法 & 描述 |
---|---|
1 | multimap::begin
返回一个迭代器,该迭代器引用 multimap 的第一个元素。 |
2 | multimap::cbegin
返回一个常量迭代器,该迭代器引用 multimap 的第一个元素。 |
3 | multimap::cend
返回一个指向超出末尾multimap 的元素。 |
4 | multimap::clear
通过删除所有元素并将其大小设置为零来销毁 multimap。 |
5 | multimap::count
返回与键关联的 multimapped 值的个数k. |
6 | multimap::crbegin
返回一个常量反向迭代器,该迭代器指向容器的最后一个元素。 |
7 | multimap::crend
返回一个常量反向迭代器,该迭代器指向容器中第一个元素之前的理论元素。 |
8 | multimap::emplace
通过插入新元素扩展容器。 |
9 | multimap::emplace_hint 提示版本 使用提示作为元素的位置,在多重映射中插入一个新元素。 |
10 | multimap::empty
测试多重映射是否为空。 |
11 | multimap::end
返回一个指向超出末尾多重映射中的元素。 |
12 | multimap::equal_range
返回与特定键匹配的元素范围。 |
13 | multimap::erase 位置版本 从多重映射中删除单个元素。position. |
14 | multimap::erase 位置版本 从多重映射中删除单个元素。position. |
15 | multimap::erase key
删除与键关联的映射值k. |
16 | multimap::erase 范围版本
从多重映射中删除元素范围。 |
17 | multimap::erase 范围版本 从多重映射中删除元素范围。 |
18 | multimap::find
查找与键关联的元素k. |
19 | multimap::get_allocator
返回与多重映射关联的分配器。 |
20 | multimap::insert 单个元素 通过在多重映射中插入新元素来扩展容器。 |
21 | multimap::insert 提示版本 通过在多重映射中插入新元素来扩展容器。 |
22 | multimap::insert 范围版本
通过在多重映射中插入新元素来扩展容器。 |
23 | multimap::insert 移动提示版本 通过插入新元素来扩展多重映射。 |
24 | multimap::insert 初始化列表版本
通过从初始化列表中插入新元素来扩展多重映射。 |
25 | multimap::key_comp
返回一个比较键的函数对象,它是此容器的构造函数参数的副本comp. |
26 | multimap::lower_bound
返回一个指向第一个不小于键的元素的迭代器k. |
27 | multimap::max_size
返回多重映射可以容纳的最大元素数。 |
28 | multimap::operator= 复制版本 通过替换旧内容为多重映射分配新内容,并在必要时修改大小。 |
29 | multimap::operator= 移动版本 将一个多重映射的内容移动到另一个多重映射中,并在必要时修改大小。 |
30 | multimap::operator= 初始化列表版本 将初始化列表中的元素复制到多重映射中。 |
31 | multimap::rbegin
返回一个反向迭代器,该迭代器指向多重映射的最后一个元素。 |
32 | multimap::rend
返回一个反向迭代器,该迭代器指向多重映射的反向末尾。 |
33 | multimap::size
返回多重映射中存在的元素数量。 |
34 | multimap::swap
交换多重映射的内容与多重映射x的内容。 |
35 | multimap::upper_bound
返回一个指向第一个大于键的元素的迭代器k. |
36 | multimap::value_comp
返回一个比较类型对象的函数对象std::multimap::value_type. |
非成员重载函数
序号 | 方法 & 描述 |
---|---|
1 | operator==
测试两个多重映射是否相等。 |
2 | operator!=
测试两个多重映射是否相等。 |
3 | operator<
测试第一个多重映射是否小于另一个。 |
4 | multimap::operator<=
测试第一个多重映射是否小于或等于另一个。 |
5 | operator>
测试第一个多重映射是否大于另一个。 |
6 | operator>=
测试第一个多重映射是否大于或等于另一个。 |
7 | swap()
交换多重映射的内容与多重映射x的内容。 |