std::multimap<Key,T,Compare,Allocator>::equal_range
来自cppreference.com
| |
(1) | |
| |
(2) | |
| (3) | (C++14 起) | |
| |
(4) | (C++14 起) |
返回容器中所有拥有给定键的元素的范围。范围以两个迭代器定义,一个指向首个不小于 key 的元素,另一个指向首个大于 key 的元素。首个迭代器可以换用 lower_bound() 获得,而第二迭代器可换用 upper_bound() 获得。
1,2) 将键与
key 比较。3,4) 将键与值
x 比较。此重载只有在限定标识 Compare::is_transparent 合法并指代类型时才会参与重载决议。它允许调用此函数时无需构造 Key 的实例。参数
| key | - | 要与元素比较的键值 |
| x | - | 能与 Key 比较的替用值
|
返回值
含一对定义所需范围的迭代器的 std::pair:第一个指向首个不小于 key 的元素,第二个指向首个大于 key 的元素。
若无元素不小于 key,则将尾后(见 end())迭代器作为第一元素返回。类似地,若无元素大于 key,则将尾后迭代器作为第二元素返回。
|
因为 |
(C++11 起) |
复杂度
与容器大小成对数。
注解
| 功能特性测试宏 | 值 | 标准 | 功能特性 |
|---|---|---|---|
__cpp_lib_generic_associative_lookup |
201304L |
(C++14) | 关联容器中的异质比较查找;重载 (3,4) |
示例
运行此代码
#include <iostream>
#include <map>
int main()
{
std::multimap<int, char> dict
{
{1, 'A'},
{2, 'B'},
{2, 'C'},
{2, 'D'},
{4, 'E'},
{3, 'F'}
};
auto range = dict.equal_range(2);
for (auto i = range.first; i != range.second; ++i)
std::cout << i->first << ": " << i->second << '\n';
}
输出:
2: B
2: C
2: D
