unordered_multimap equal_range() 函数在C++ STL中的应用

unordered_multimap equal_range() 函数在C++ STL中的应用

C++ STL中,unordered_multimap是一种无序键值对容器,它是模板类,并且它的所有成员函数都是通用的,意味着它们可以应用于任何数据类型。equal_range()函数就是unordered_multimap的一个成员函数,它可以用来找到等值范围内的迭代器,可以在需要时自动识别代码语言并标记。

unordered_multimap的介绍

C++ STL中,unordered_multimap是一个由pair对象组成的集合,其中键和值可以是任何数据类型。unordered_multimap是一个无序的键值对容器,其中每个键可以有多个值,它的内部实现是哈希表。 unordered_multimap在插入和查找操作方面都有良好的性能,因为它使用哈希表实现。

下面是一个使用unordered_multimap举例的程序:

#include <iostream>
#include <unordered_multimap>
#include <string>

using namespace std;

int main() {
    //创建一个unordered_multimap对象,键为string类型,值为int类型
    unordered_multimap<string, int> umap = {{"apple", 1}, {"banana", 2}, {"apple", 3}, {"cherry", 4}};

    //循环遍历unordered_multimap中所有的键值对
    for (auto it = umap.begin(); it != umap.end(); ++it) {
        cout << it->first << " : " << it->second << endl;
    }

    return 0;
}

运行上面的程序,它将输出以下结果:

banana : 2
apple : 1
cherry : 4
apple : 3

如您所见,我们可以通过键值对中的键“apple”得到两个值1和3。这是因为unordered_multimap容器中的键可以拥有多个值。

equal_range()函数的介绍

在unordered_multimap容器中使用equal_range()函数可以找到等值范围内的迭代器。 在unordered_multimap中,每个键可以具有多个值,因此等值范围将是一组迭代器。返回的迭代器对应于键的最小和最大值。

equal_range()函数的语法如下:

pair<iterator,iterator> equal_range(const key_type& k);

该函数使用指定的键k搜索unordered_multimap容器,并返回键值等于k的迭代器对。该函数返回一个pair,其中第一个迭代器表示第一个等于k的键值对应的元素,第二个迭代器表示最后一个等于k的键值对应的元素的下一个位置。如果容器中不存在等于k的元素,则返回一个迭代器对,其中两个迭代器均等于容器中的end()。

下面是一个使用equal_range()函数的示例程序:

#include <iostream>
#include <unordered_multimap>

using namespace std;

int main() {
    //创建一个unordered_multimap对象,键为string类型,值为int类型
    unordered_multimap<string, int> umap = {{"apple", 1}, {"banana", 2}, {"apple", 3}, {"cherry", 4}};

    //使用equal_range()函数查找键为apple的迭代器范围
    auto range = umap.equal_range("apple");

    //循环遍历键为apple的所有值
    for (auto it = range.first; it != range.second; ++it) {
        cout << it->second << endl;
    }

    return 0;
}

运行上面的程序,它将输出以下结果:

1
3

总结

在C++ STL中的unordered_multimap容器中,可以使用equal_range()函数来查找等值范围内的迭代器。该函数返回一个pair,其中第一个迭代器表示等于键的第一个元素的迭代器,第二个迭代器表示等于键的最后一个元素迭代器的下一个位置。我们可以使用这些迭代器来遍历键对应的所有值。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 教程