定义于头文件
template< class Key, |
(1) | |
namespace pmr { template |
(2) | (C++17 起) |
std::map
是有序键值对容器,它的元素的键是唯一的。用比较函数 Compare
排序键。搜索、移除和插入操作拥有对数复杂度。 map 通常实现为红黑树。
在每个标准库使用比较 (Compare) 概念的位置,以等价关系检验唯一性。不精确而言,若二个对象 a
与 b
互相比较不小于对方 : !comp(a, b) && !comp(b, a)
,则认为它们等价(非唯一)。
std::map
满足容器 (Container) 、具分配器容器 (AllocatorAwareContainer) 、关联容器 (AssociativeContainer) 和可逆容器 (ReversibleContainer) 的要求。
std::map::count
size_type count( const Key& key ) const; |
(1) | |
template< class K > |
(2) | (C++14 起) |
返回拥有关键比较等价于指定参数的元素数,因为此容器不允许重复故为 1 或 0。
1) 返回拥有关键 key
的元素数。
2) 返回拥有关键比较等价于值 x
的元素数。此重载仅若有限定 id Compare::is_transparent 合法且指代一个类型才参与重载决议。这允许调用此函数而不构造 Key
的实例。
key | - | 要计量元素数的关键值 |
x | - | 要与关键比较的替用值 |
拥有比较等价于 key
或 x
的关键的元素数,对于 (1) 为 1 或 0。
与容器大小成对数。
std::map::find
iterator find( const Key& key ); |
(1) | |
const_iterator find( const Key& key ) const; |
(2) | |
template< class K > iterator find( const K& x ); |
(3) | (C++14 起) |
template< class K > const_iterator find( const K& x ) const; |
(4) | (C++14 起) |
1,2) 寻找键等于 key
的的元素。
3,4) 寻找键比较等价于值 x
的元素。此重载仅若若有限定 id Compare::is_transparent 合法并且指代类型才参与重载决议。允许调用此函数而无需构造 Key
的实例。
key | - | 要搜索的元素键值 |
x | - | 能通透地与键比较的任何类型值 |
指向键等于 key
的元素的迭代器。若找不到这种元素,则返回尾后(见 end() )迭代器。
与容器大小成对数。
std::map::contains
bool contains( const Key& key ) const; |
(1) | (C++20 起) |
template< class K > bool contains( const K& x ) const; |
(2) | (C++20 起) |
1) 检查容器中是否有关键等价于 key
的元素。
2) 检查是否有键比较等价于值 x
的元素。此重载仅若有限定 id Compare::is_transparent 合法且代表类型才参与重载决议。它允许调用此函数而无需构造 Key
的实例。
key | - | 要搜索的元素键值 |
x | - | 任何能通透地与键比较的类型的值 |
若有这种元素则为 true ,否则为 false 。
与容器大小成对数。
std::map::equal_range
std::pair |
(1) | |
std::pair |
(2) | |
template< class K > |
(3) | (C++14 起) |
template< class K > |
(4) | (C++14 起) |
返回容器中所有拥有给定关键的元素范围。范围以二个迭代器定义,一个指向首个不小于 key
的元素,另一个指向首个大于 key
的元素。首个迭代器可以换用 lower_bound() 获得,而第二迭代器可换用 upper_bound() 获得。
1,2) 比较关键与 key
。
3,4) 比较关键与值 x
。此重载仅若有限定 id Compare::is_transparent 合法且指代一个类型才参与重载决议。它们允许调用此函数而不构造 Key
的实例。
本节未完成 原因:解释为何更好 |
key | - | 要比较元素的关键值 |
x | - | 能与 Key 比较的替用值 |
含一对定义所需范围的迭代器的 std::pair :第一个指向首个不小于 key
的元素,第二个指向首个大于 key
的元素。
若无元素不小于 key
,则将尾后(见 end() )迭代器作为第一元素返回。类似地,若无元素大于 key
,则将尾后迭代器作为第二元素返回。
与容器大小成对数。
std::map::lower_bound
iterator lower_bound( const Key& key ); |
(1) | |
const_iterator lower_bound( const Key& key ) const; |
(1) | |
template< class K > |
(2) | (C++14 起) |
template< class K > |
(2) | (C++14 起) |
1) 返回指向首个不小于 key
的元素的迭代器。
2) 返回指向首个比较不小于值 x
的元素的迭代器。此重载仅若有限定 id Compare::is_transparent 合法并指代一个类型才参与重载决议。它们允许调用此函数而无需构造 Key
的实例。
key | - | 要与元素比较的关键值 |
x | - | 能与 Key 比较的替用值 |
指向首个不小于 key
的元素的迭代器。若找不到这种元素,则返回尾后迭代器(见 end() )。
与容器大小成对数。
std::map::upper_bound
iterator upper_bound( const Key& key ); |
(1) | |
const_iterator upper_bound( const Key& key ) const; |
(1) | |
template< class K > |
(2) | (C++14 起) |
template< class K > |
(2) | (C++14 起) |
1) 返回指向首个大于 key
的元素的迭代器。
2) 返回指向首个比较大于值 x
的元素的迭代器。此重载仅若有限定 id Compare::is_transparent 合法并指代一个类型才参与重载决议。这允许调用此函数而无需构造 Key
的实例。
key | - | 与元素比较的关键值 |
x | - | 能与 Key 比较的替用值 |
指向首个大于 key
的元素的迭代器。若找不到这种元素,则返回尾后(见 end() )迭代器。
与容器大小成对数。