在 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()
函数所返回的迭代器访问容器元素时,需先将迭代器前移一个位置,指向容器的最后一个实际元素。