C++ 参考手册
- C++11
- C++14
- C++17
- C++20
- C++ 编译器支持情况表
- 独立与宿主实现
- C++ 语言
- C++ 关键词
- 预处理器
- C++ 标准库头文件
- 具名要求
- 功能特性测试 (C++20)
- 工具库
- 类型支持(基本类型、RTTI、类型特性)
- 概念库 (C++20)
- 错误处理
- 动态内存管理
- 日期和时间工具
- 字符串库
- 容器库
- std::array
- std::vector
- std::map
- std::map<Key,T,Compare,Allocator>::emplace
- std::map<Key,T,Compare,Allocator>::get_allocator
- std::map<Key,T,Compare,Allocator>::at
- std::map<Key,T,Compare,Allocator>::operator[]
- std::map<Key,T,Compare,Allocator>::begin, std::map<Key,T,Compare,Allocator>::cbegin
- std::map<Key,T,Compare,Allocator>::end, std::map<Key,T,Compare,Allocator>::cend
- std::map<Key,T,Compare,Allocator>::extract
- std::map<Key,T,Compare,Allocator>::merge
- std::map<Key,T,Compare,Allocator>::try_emplace
- std::map<Key,T,Compare,Allocator>::insert_or_assign
- std::map<Key,T,Compare,Allocator>::clear
- std::map<Key,T,Compare,Allocator>::map
- std::map<Key,T,Compare,Allocator>::~map
- std::map<Key,T,Compare,Allocator>::operator=
- std::map<Key,T,Compare,Allocator>::rbegin, std::map<Key,T,Compare,Allocator>::crbegin
- std::map<Key,T,Compare,Allocator>::rend, std::map<Key,T,Compare,Allocator>::crend
- std::map<Key,T,Compare,Allocator>::empty
- std::map<Key,T,Compare,Allocator>::size
- std::map<Key,T,Compare,Allocator>::max_size
- std::map<Key,T,Compare,Allocator>::insert
- std::map<Key,T,Compare,Allocator>::emplace_hint
- std::map<Key,T,Compare,Allocator>::erase
- std::map<Key,T,Compare,Allocator>::swap
- std::map<Key,T,Compare,Allocator>::count
- std::map<Key,T,Compare,Allocator>::find
- std::map<Key,T,Compare,Allocator>::contains
- std::map<Key,T,Compare,Allocator>::equal_range
- std::map<Key,T,Compare,Allocator>::lower_bound
- std::map<Key,T,Compare,Allocator>::upper_bound
- std::map<Key,T,Compare,Allocator>::key_comp
- std::map<Key,T,Compare,Allocator>::value_comp
- std::swap(std::map)
- std::erase_if (std::map)
- operator==,!=,<,<=,>,>=,<=>(std::map)
- std::map 的推导指引
- std::map<Key,T,Compare,Allocator>::value_compare
- std::unordered_map
- std::priority_queue
- std::span
- std::forward_list
- std::deque
- std::list
- std::set
- std::multiset
- std::multimap
- std::unordered_set
- std::unordered_multiset
- std::unordered_multimap
- std::stack
- std::queue
- std::vector<bool>
- 结点把柄 (C++17)
- 注释
- 迭代器库
- 范围库 (C++20)
- 算法库
- 数值库
- 输入/输出库
- 文件系统库
- 本地化库
- 正则表达式库
- 原子操作库
- 线程支持库
- 实验性 C++ 特性
- 有用的资源
- 索引
- std 符号索引
- 协程支持 (C++20)
- C++ 关键词
std::map<Key,T,Compare,Allocator>::equal_range
std::pair<iterator,iterator> equal_range( const Key& key ); |
(1) | |
std::pair<const_iterator,const_iterator> equal_range( const Key& key ) const; |
(2) | |
template< class K > std::pair<iterator,iterator> equal_range( const K& x ); |
(3) | (C++14 起) |
template< class K > std::pair<const_iterator,const_iterator> equal_range( const K& x ) const; |
(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
,则将尾后迭代器作为第二元素返回。
复杂度
与容器大小成对数。
示例
运行此代码
#include <map> #include <iostream> int main() { const std::map<int, const char*> m{ { 0, "zero" }, { 1, "one" }, { 2, "two" }, }; { auto p = m.equal_range(1); for (auto& q = p.first; q != p.second; ++q) { std::cout << "m[" << q->first << "] = " << q->second << '\n'; } if (p.second == m.find(2)) { std::cout << "end of equal_range (p.second) is one-past p.first\n"; } else { std::cout << "unexpected; p.second expected to be one-past p.first\n"; } } { auto pp = m.equal_range(-1); if (pp.first == m.begin()) { std::cout << "pp.first is iterator to first not-less than -1\n"; } else { std::cout << "unexpected pp.first\n"; } if (pp.second == m.begin()) { std::cout << "pp.second is iterator to first element greater-than -1\n"; } else { std::cout << "unexpected pp.second\n"; } } { auto ppp = m.equal_range(3); if (ppp.first == m.end()) { std::cout << "ppp.first is iterator to first not-less than 3\n"; } else { std::cout << "unexpected ppp.first\n"; } if (ppp.second == m.end()) { std::cout << "ppp.second is iterator to first element greater-than 3\n"; } else { std::cout << "unexpected ppp.second\n"; } } }
输出:
m[1] = one end of equal_range (p.second) is one-past p.first pp.first is iterator to first not-less than -1 pp.second is iterator to first element greater-than -1 ppp.first is iterator to first not-less than 3 ppp.second is iterator to first element greater-than 3
参阅
寻找带有特定键的元素 (公开成员函数) | |
返回指向首个大于给定键的元素的迭代器 (公开成员函数) | |
返回指向首个不小于给定键的元素的迭代器 (公开成员函数) |