📜  C++ STL中的unordered_map end()函数(1)

📅  最后修改于: 2023-12-03 14:59:46.822000             🧑  作者: Mango

C++ STL中的unordered_map end()函数

简介

unordered_map是C++ STL中的一个关联容器,它的底层实现使用哈希表。end()函数是unordered_map的成员函数之一,它的作用是返回一个指针,指向unordered_map容器中的最后一个元素之后的位置。我们可以使用这个指针来迭代unordered_map容器中的所有元素,或者判断容器是否为空,或者判断某个元素是否存在于容器中。

语法

unordered_map容器的end()函数有两种重载方式:

iterator end() noexcept;
const_iterator end() const noexcept;

其中iteratorconst_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对应的元素。否则,我们可以使用迭代器访问元素的值。