在 C++ STL 中的multimap::begin() 和 multimap::end() 使用

在 C++ STL 中的multimap::begin() 和 multimap::end() 使用

C++ STL 中,multimap 是一种关联式容器,它以键值对的形式存储数据集合,并在内部进行自动排序。与 map 容器不同的是,multimap 允许一个键对应多个值,因此可以称之为“多重映射”。

在使用 multimap 容器时,我们经常会用到两个成员函数:begin() 和 end()。本文将重点介绍这两个函数的使用方法及注意事项。

multimap::begin()

multimap::begin() 是 multimap 容器的成员函数,返回一个迭代器,指向容器的第一个元素。该函数没有参数。

使用范例:

#include <iostream>
#include <map>

int main()
{
    std::multimap<int, std::string> my_multimap = {
        {1, "apple"},
        {2, "banana"},
        {3, "cherry"},
        {2, "date"},
        {1, "elderberry"}
    };

    auto it = my_multimap.begin(); // 获取 multimap 容器的第一个元素
    std::cout << "The first element is " << it->second << std::endl; // 输出容器的第一个值

    return 0;
}

上述范例代码会输出容器的第一个值:“apple”。

需要注意的是,如果 multimap 容器为空,则 multimap::begin() 函数将返回一个指向容器尾部的迭代器(即不指向任何实际元素的迭代器)。因此在使用 multimap 迭代器时,需要先判断容器是否为空。

multimap::end()

multimap::end() 是 multimap 容器的成员函数,返回一个迭代器,指向容器末尾的“虚拟”元素。该函数没有参数。

使用范例:

#include <iostream>
#include <map>

int main()
{
    std::multimap<int, std::string> my_multimap = {
        {1, "apple"},
        {2, "banana"},
        {3, "cherry"},
        {2, "date"},
        {1, "elderberry"}
    };

    auto it = my_multimap.end(); // 获取迭代器指向容器末尾的“虚拟”元素
    --it; // 将迭代器前移一个位置,指向容器的最后一个元素
    std::cout << "The last element is " << it->second << std::endl; // 输出容器的最后一个值

    return 0;
}

上述范例代码会输出容器的最后一个值:“date”。

需要注意的是,multimap::end() 函数所返回的迭代器指向容器的“虚拟”元素,并不是容器中的实际元素。因此,当使用迭代器访问容器元素时,需先将迭代器前移一个位置,指向容器的最后一个实际元素。

总结

本文主要介绍了 multimap::begin() 和 multimap::end() 在 C++ STL 中的使用方法及注意事项。

  • multimap::begin() 函数返回一个迭代器,指向 multimap 容器的第一个元素。
  • multimap::end() 函数返回一个迭代器,指向 multimap 容器末尾的“虚拟”元素。
  • 如果 multimap 容器为空,则 multimap::begin() 函数返回一个指向容器尾部的迭代器,在使用 multimap 迭代器时需要判断容器是否为空。
  • 当使用 multimap::end() 函数所返回的迭代器访问容器元素时,需先将迭代器前移一个位置,指向容器的最后一个实际元素。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程