📅  最后修改于: 2023-12-03 14:59:46.822000             🧑  作者: Mango
unordered_map
是C++ STL中的一个关联容器,它的底层实现使用哈希表。end()
函数是unordered_map
的成员函数之一,它的作用是返回一个指针,指向unordered_map
容器中的最后一个元素之后的位置。我们可以使用这个指针来迭代unordered_map
容器中的所有元素,或者判断容器是否为空,或者判断某个元素是否存在于容器中。
unordered_map
容器的end()
函数有两种重载方式:
iterator end() noexcept;
const_iterator end() const noexcept;
其中iterator
和const_iterator
都是迭代器类型,它们可以通过unordered_map
容器的begin()
函数来获取。这两个函数的作用是相同的,只是const_iterator
是一个常量迭代器,它不能修改容器中的元素。
unordered_map
容器的end()
函数返回一个指针,指向unordered_map
容器中的最后一个元素之后的位置。注意,这个指针并不是容器中的元素,它只是一个指向元素的位置的指针。如果unordered_map
容器为空,则end()
函数返回的指针指向容器中的第一个元素之前的位置,这种情况下,begin()
函数也返回同样的指针。
下面是使用unordered_map
容器迭代元素的示例代码:
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> myMap = {{"apple", 3}, {"banana", 2}, {"orange", 5}};
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << it->first << " : " << it->second << std::endl;
}
return 0;
}
结果输出:
apple : 3
banana : 2
orange : 5
我们可以看到,通过迭代unordered_map
容器中的元素,我们可以访问容器中的所有键和对应的值。在这个例子中,我们使用begin()
函数获取了指向容器中第一个元素的迭代器,使用end()
函数获取了指向容器中最后一个元素之后位置的迭代器,然后使用++
运算符不断移动迭代器,访问所有的元素。
下面是使用unordered_map
容器判断某个元素是否存在于容器中的示例代码:
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> myMap = {{"apple", 3}, {"banana", 2}, {"orange", 5}};
std::string key = "apple";
auto it = myMap.find(key);
if (it == myMap.end()) {
std::cout << key << " is not in myMap." << std::endl;
} else {
std::cout << key << " : " << it->second << std::endl;
}
return 0;
}
结果输出:
apple : 3
在这个例子中,我们使用find()
函数来查找容器中是否存在key
对应的元素。find()
函数会返回一个指向key
对应的元素的迭代器,如果找不到,则返回end()
函数返回的指针。我们可以使用==
运算符来判断两个指针是否相等,如果相等,则说明没有找到key
对应的元素。否则,我们可以使用迭代器访问元素的值。