C++ STL 中 unordered_multimap cend() 函数
在C++ STL中,unordered_multimap
是一种关联容器,其底层结构是哈希表。通过哈希表,unordered_multimap
能够提供O(1)时间复杂度的元素查找、插入和删除操作。本文将介绍unordered_multimap
的cend()
函数的使用方法及其注意事项。
什么是 cend() 函数?
cend()
是unordered_multimap
类的成员函数,它返回一个常量迭代器,指向unordered_multimap
容器中的结束元素。具体来说,该函数返回的是指向一个“过去-the-past-the-beginning”的迭代器,也就是指向unordered_multimap
中不存在的元素的迭代器。需要注意的是,返回的是常量迭代器,所以不允许修改其所指向的元素。
下面是使用cend()
函数的示例代码:
#include <iostream>
#include <unordered_map>
int main()
{
std::unordered_multimap<std::string, int> mymap = {{"apple",1},{"banana",2},{"cherry",3}};
std::cout << "Traversing unordered_multimap using cend():" << std::endl;
for (auto it = mymap.begin(); it != mymap.cend(); ++it) {
std::cout << "{" << (*it).first << ", " << (*it).second << "}" << std::endl;
}
return 0;
}
运行以上代码,输出结果如下:
Traversing unordered_multimap using cend():
{cherry, 3}
{cherry, 4}
{apple, 1}
{banana, 2}
可以看到,cend()
函数返回的迭代器指向的是unordered_multimap
容器中不存在的元素,而在for循环中,为了遍历容器,我们使用了begin()函数返回的迭代器和cend()函数返回的迭代器配合,遍历整个容器。
注意事项
cend()
函数返回的常量迭代器不允许修改其所指向的元素。如果需要修改元素,应该使用iterator
或const_iterator
迭代器。cend()
函数返回的迭代器指向的元素不存在与unordered_multimap
容器中。因此,不要尝试访问cend()
函数返回的迭代器所指向的元素,否则会出现未定义行为。
结论
cend()
函数是unordered_multimap
类中的一个非常有用的函数,它返回的迭代器引用的是一个不存在的元素,通过配合begin()函数的迭代器,可以遍历整个unordered_multimap
容器。需要注意的是,返回的是常量迭代器,不允许修改其所指向的元素,同时不要尝试访问该迭代器所指向的元素,否则会出现未定义行为。