📅  最后修改于: 2023-12-03 15:29:51.051000             🧑  作者: Mango
unordered_multimap
是C++标准模板库(STL)中的一个容器,它是哈希表的一种实现。我们可以使用equal_range()
函数来查找一个键在unordered_multimap
中的所有值的迭代器范围。本文将介绍unordered_multimap::equal_range()
函数的语法、用法和注意事项,并给出一个简单的示例。
unordered_multimap
的equal_range()
函数的语法如下:
pair<iterator,iterator> equal_range (const key_type& k);
参数k
是要查找的键值。函数返回一对迭代器:第一个迭代器指向第一个等于k
的元素;第二个迭代器指向最后一个等于k
的元素的下一个元素。如果没找到这样的元素,那么两个迭代器都将指向unordered_multimap
的end()
。
下面是一个示例程序,演示如何使用unordered_multimap::equal_range()
函数来查找键值为2的元素并输出它们的值:
#include <iostream>
#include <unordered_map>
int main()
{
std::unordered_multimap<int,std::string> umap = { {1,"one"}, {2,"two"}, {2,"another two"}, {3,"three"} };
// 查找键值为2的元素
auto range = umap.equal_range(2);
// 输出结果
std::cout << "Elements with key 2:";
for (auto it = range.first; it != range.second; ++it)
std::cout << ' ' << it->second;
std::cout << '\n';
return 0;
}
输出结果为:
Elements with key 2: two another two
上述程序中,我们首先创建了一个unordered_multimap
,其中包含4个键值对。然后,我们使用equal_range()
函数找到了键值为2的元素,并将它们的值输出。
unordered_multimap::equal_range()
函数的复杂度为常数加上已找到元素的数量。在最坏情况下,它的时间复杂度为线性,取决于哈希函数的质量和容器的大小。它也是一个只读操作,不会修改unordered_multimap
的内容。
unordered_multimap::equal_range()
函数是C++ STL的一个有用而高效的查找元素的工具。使用它,我们可以轻松地查找unordered_multimap
中的所有匹配元素的值,并以迭代器范围的形式返回。