跳到主要内容

std::unordered_multimap equal_range() 方法

// (1) Non const version
std::pair<iterator,iterator> equal_range( const Key& key );

// (2) Const version
std::pair<const_iterator,const_iterator> equal_range( const Key& key ) const;

// (3) Non const version
template< class K >
std::pair<iterator,iterator> equal_range( const K& x );

// (4) Const version
template< class K >
std::pair<const_iterator,const_iterator> equal_range( const K& x ) const;
  • (1-2) 返回一个包含容器中所有键为 key 的元素的范围。该范围由两个迭代器定义,第一个迭代器指向所需范围的第一个元素,第二个迭代器指向范围最后一个元素之后的位置。
  • (3-4) 返回一个包含容器中所有键与 x 等效的元素的范围。仅当 Hash::is_transparentKeyEqual::is_transparent 有效且每个都表示一个类型时,此重载才参与重载解析。这假设这样的 Hash 可以同时使用 KKey 类型调用,并且 KeyEqual 是透明的,这两者结合起来允许在不构造 Key 实例的情况下调用此函数。

参数

  • key - 要计数的元素的键值
  • x - 可以与键透明比较的任何类型的值

返回值

包含定义所需范围的迭代器对的 std::pair

如果没有此类元素,则返回一对 past-the-end(参见 end())迭代器。

复杂度

平均情况,常数 - O(1)
最坏情况,与容器大小呈线性关系 - O(size())

平均情况,与键为 key 的元素数量呈线性关系 - O(N),其中 N 是键为 key 的元素数量。
最坏情况,与容器大小呈线性关系 - O(size())

异常

(无)

备注

特性测试宏:__cpp_lib_generic_unordered_lookup(用于重载 (3-4))。

示例

Main.cpp
#include <iostream>
#include <unordered_map>

int main()
{
std::unordered_multimap<int,char> map = {{1,'a'},{1,'b'},{1,'d'},{2,'b'}};
auto range = map.equal_range(1);
for (auto it = range.first; it != range.second; ++it) {
std::cout << it->first << ' ' << it->second << '\n';
}
}
输出
1 a
本文源自 此 CppReference 页面。为了改进或编辑偏好,它可能已被修改。点击“编辑此页面”可查看对本文档的所有更改。
悬停查看原始许可证。

std::unordered_multimap equal_range() 方法

// (1) Non const version
std::pair<iterator,iterator> equal_range( const Key& key );

// (2) Const version
std::pair<const_iterator,const_iterator> equal_range( const Key& key ) const;

// (3) Non const version
template< class K >
std::pair<iterator,iterator> equal_range( const K& x );

// (4) Const version
template< class K >
std::pair<const_iterator,const_iterator> equal_range( const K& x ) const;
  • (1-2) 返回一个包含容器中所有键为 key 的元素的范围。该范围由两个迭代器定义,第一个迭代器指向所需范围的第一个元素,第二个迭代器指向范围最后一个元素之后的位置。
  • (3-4) 返回一个包含容器中所有键与 x 等效的元素的范围。仅当 Hash::is_transparentKeyEqual::is_transparent 有效且每个都表示一个类型时,此重载才参与重载解析。这假设这样的 Hash 可以同时使用 KKey 类型调用,并且 KeyEqual 是透明的,这两者结合起来允许在不构造 Key 实例的情况下调用此函数。

参数

  • key - 要计数的元素的键值
  • x - 可以与键透明比较的任何类型的值

返回值

包含定义所需范围的迭代器对的 std::pair

如果没有此类元素,则返回一对 past-the-end(参见 end())迭代器。

复杂度

平均情况,常数 - O(1)
最坏情况,与容器大小呈线性关系 - O(size())

平均情况,与键为 key 的元素数量呈线性关系 - O(N),其中 N 是键为 key 的元素数量。
最坏情况,与容器大小呈线性关系 - O(size())

异常

(无)

备注

特性测试宏:__cpp_lib_generic_unordered_lookup(用于重载 (3-4))。

示例

Main.cpp
#include <iostream>
#include <unordered_map>

int main()
{
std::unordered_multimap<int,char> map = {{1,'a'},{1,'b'},{1,'d'},{2,'b'}};
auto range = map.equal_range(1);
for (auto it = range.first; it != range.second; ++it) {
std::cout << it->first << ' ' << it->second << '\n';
}
}
输出
1 a
本文源自 此 CppReference 页面。为了改进或编辑偏好,它可能已被修改。点击“编辑此页面”可查看对本文档的所有更改。
悬停查看原始许可证。