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

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

C++标准库中的STL(Standard Template Library)中,unordered_map是一个非常重要的容器,它的作用类似于map,可以快速地存储和查找键值对。而在unordered_map中,end()函数是一个非常重要的函数,本文将深入探讨unordered_map中的end()函数的相关内容。

unordered_map的概述

unordered_map是C++的STL库中的一个关联容器,和map比较类似,都是用于存储键值对的容器,但它们的实现方式不同。unordered_map使用哈希表来存储键值对,因此插入、查询、删除的时间复杂度都是O(1)。unordered_map中的元素是无序的,如果需要有序,那么推荐使用map。

unordered_map的声明方式如下:

unordered_map<string, int> mymap;

上述代码声明了一个名为mymap的unordered_map,用于存储字符串(键)和整数(值)的对应关系。也可以使用别名的方式来声明,如下:

using MyMap = unordered_map<string, int>;
MyMap mymap;

unordered_map的end()函数

在unordered_map中,end()函数返回一个指向容器最后一个元素之后的迭代器。如果unordered_map为空,那么end()函数返回的是指向容器中没有元素的位置的迭代器。在使用unordered_map的时候,往往需要用到begin()和end()函数来进行遍历,下面是一个简单的例子:

unordered_map<string, int> mymap;

mymap.insert(make_pair("张三", 18));
mymap.insert(make_pair("李四", 20));
mymap.insert(make_pair("王五", 22));

for (auto it = mymap.begin(); it != mymap.end(); ++it) {
    cout << it->first << " : " << it->second << endl;
}

上述代码中,通过insert函数插入了三组键值对,然后使用begin()和end()函数进行了遍历。由于元素是无序的,每次输出结果可能是不同的。

end()函数的使用

在unordered_map中,end()函数通常用来判断遍历是否结束。通常情况下,我们需要通过遍历unordered_map来查找某个元素,判断的方法是通过遍历整个unordered_map查找和目标元素相同的键值对。当遍历到end()位置时,即可判断目标元素是否存在。

以下是一个简单的例子,用于查找键为”李四”的元素是否存在:

unordered_map<string, int> mymap;

mymap.insert(make_pair("张三", 18));
mymap.insert(make_pair("李四", 20));
mymap.insert(make_pair("王五", 22));

auto it = mymap.find("李四");
if (it != mymap.end()) {
    cout << "键值对(" << it->first << "," << it->second << ")存在" << endl;
} else {
    cout << "键值对(" << "李四" << "," << "?" << ")不存在" << endl;
}

上述代码使用了find函数查找键为”李四”的元素是否存在。如果存在,就输出对应的键值对,否则输出”键值对(李四,?)不存在”。在查找过程中,是否已经遍历到了unordered_map的末尾,即是否到了end()位置,是判断是否查找到元素的一个关键。

程序示例

下面是一个简单的程序示例,展示了unordered_map end()函数的使用方法:

#include <iostream>
#include <unordered_map>

using namespace std;

int main()
{
    unordered_map<string, int> mymap;

    mymap["张三"] = 18;
    mymap["李四"] = 20;
   mymap["王五"] = 22;

    cout << "遍历unordered_map:" << endl;
    for (auto it = mymap.begin(); it != mymap.end(); ++it) {
        cout << it->first << " : " << it->second << endl;
    }

    cout << "查找键值对:" << endl;
    auto it = mymap.find("李四");
    if (it != mymap.end()) {
        cout << "键值对(" << it->first << "," << it->second << ")存在" << endl;
    } else {
        cout << "键值对(" << "李四" << "," << "?" << ")不存在" << endl;
    }

    return 0;
}

程序首先插入了三组键值对,然后使用begin()和end()函数进行了遍历,并使用find函数查找键为”李四”的元素是否存在。

结论

unordered_map是一个非常重要的容器,在实际开发中广泛应用。end()函数是unordered_map中的一个重要函数,用于返回指向容器最后一个元素之后的迭代器。在实际开发中,我们可以通过遍历整个unordered_map来查找某个元素,并通过判断迭代器是否到达end()位置来判断查找是否结束。由于unordered_map中元素是无序的,因此每次遍历的结果可能是不同的,因此在使用unordered_map的时候应该注意这一点。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 教程