在C ++ STL中的unordered_multimap begin()和end()函数

在C ++ STL中的unordered_multimap begin()和end()函数

C++ STL的unordered_multimap是一种关联式容器,它允许存储多个相同键的元素。在实际应用中,我们可能需要遍历unordered_multimap容器中存储的每一个元素。C++ STL提供了begin()和end()函数来实现遍历unordered_multimap容器。

begin()函数

unordered_multimap中的begin()函数返回指向第一个元素的迭代器,该迭代器指向的元素可以通过解引用操作符获取,例如:

#include <iostream>
#include <unordered_map>

using namespace std;

int main()
{
    unordered_multimap<string, int> mymap = {{"apple", 10}, {"banana", 20}, {"apple", 30}};

    unordered_multimap<string, int>::iterator it = mymap.begin();

    cout << "The first element's key-value pair is: " << it->first << " : " << it->second << endl;

    return 0;
}

输出:

The first element's key-value pair is: apple : 10

在上面的示例中,我们定义了一个unordered_multimap容器,并使用begin()函数返回一个迭代器指向第一个元素。我们通过解引用操作符获取到了第一个元素的key值和value值,并将其打印出来。

需要注意的是,begin()函数返回的是一个迭代器类型的指针,因此也可以使用auto关键字来定义迭代器指针,例如:

auto it = mymap.begin();

end()函数

unordered_multimap中的end()函数返回一个指向容器末尾的迭代器(也就是说,返回的迭代器并不指向实际的元素),我们可以将其与begin()函数返回的迭代器一起使用来实现遍历unordered_multimap容器中的所有元素,例如:

#include <iostream>
#include <unordered_map>

using namespace std;

int main()
{
    unordered_multimap<string, int> mymap = {{"apple", 10}, {"banana", 20}, {"apple", 30}};

    for (unordered_multimap<string, int>::iterator it = mymap.begin(); it != mymap.end(); ++it)
    {
        cout << it->first << " : " << it->second << endl;
    }

    return 0;
}

输出:

apple : 10
apple : 30
banana : 20

在上面的示例中,我们使用for循环和迭代器遍历unordered_multimap容器中的所有元素,并通过解引用操作符获取到每个元素的key值和value值进行打印。

需要注意的是,end()函数返回的迭代器并不指向实际的元素,因此我们在判断迭代器不等于end()时,应该使用!=而不是<。如果使用<来判断,可能会导致遍历未完成或重复遍历某些元素。

结论

unordered_multimap容器是一种允许存储多个相同键的元素的关联式容器。在遍历容器中的元素时,begin()函数可以返回一个指向第一个元素的迭代器,end()函数可以返回一个指向容器末尾的迭代器。通过这两个函数的使用,我们可以遍历unordered_multimap容器中的所有元素,从而实现容器的遍历操作。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 教程