C++ STL中的unordered_map.cend函数

C++ STL中的unordered_map.cend函数

C++语言中,STL(Standard Template Library)是一个被广泛使用的程序库,其中包含了一些常用的数据结构和算法。其中,unordered_map是一个非常实用的哈希表容器,它可以将数据类(key)映射到值类(value)上。在unordered_map中,我们可以使用许多函数进行容器的操作,其中cend()函数就是其中之一。

unordered_map容器简介

unordered_map是一个哈希表容器,它在存储数据方面具有十分快速和高效的优势。该容器会为数据类(key)分配桶,每个桶中会存放一组数据和对应的键值对(key-value pair)。在存储数据时,unordered_map会对数据类进行哈希,并根据哈希的值将其放入相应的桶中。而在查询数据时,它只需要对查询的数据同样进行哈希并在相应的桶中查询即可,不需要遍历整个容器。

unordered_map容器的使用方法和其他STL容器类似,可以使用类模板和模板类型参数定义容器,并通过构造函数进行初始化。因为是使用模板定义的,实际上unordered_map容器可以存储任意类型的数据。下面是一个基本的unordered_map容器定义和初始化示例:

#include <iostream>
#include <unordered_map>
using namespace std;

int main()
{
    unordered_map<string, int> umap {{"one",1}, {"two", 2}, {"three", 3}};
    cout << umap["one"] << endl;
    return 0;
}

在上述代码中,我们使用了unordered_map<string, int>定义了一个包含三个元素的unordered_map容器umap,并且对其进行了初始化。

cend()函数介绍

cend()函数是unordered_map中的一个函数,它返回的是指向容器所存储元素末尾(最后一个元素的下一个位置)的迭代器。通过该迭代器,我们可以轻松遍历整个unordered_map容器。

语法如下:

const_iterator cend() const;

在语法中,const_iterator是unordered_map容器中的迭代器类,该类型声明了指向不可变的元素的指针。在unordered_map容器中,cend()函数返回的迭代器是指向不可变的元素的指针。

使用cend()函数的示例如下:

#include <iostream>
#include <unordered_map>
using namespace std;

int main()
{
    unordered_map<string, int> umap {{"one",1}, {"two", 2}, {"three", 3}};
    for(auto i=umap.begin(); i!=umap.cend(); i++)
    {
        cout << i->first << " : " << i->second << endl;
    }
    return 0;
}

在上述代码中,我们使用了cend()函数来遍历整个unordered_map容器umap,并输出所有元素的键和值。这里注意到,使用cend()函数期间,我们使用了const_iterator类型的迭代器变量i进行遍历操作。

示例代码

以下是一些使用cend()函数的示例代码:

示例1

#include <iostream>
#include <unordered_map>

using namespace std;

int main()
{
    unordered_map<string, int> umap {{"one",1}, {"two", 2}, {"three", 3}};

    unordered_map<string, int>::iterator itr;
    for (itr = umap.begin(); itr != umap.cend(); itr++)
    {
        cout << itr->first << " : " << itr->second << endl;
    }

    return 0 ;
}

输出结果为:

one : 1
two : 2
three : 3

在该示例代码中,我们创建了一个unordered_map容器umap,并通过迭代器遍历整个容器,输出了每个元素的键和值。

示例2

#include<iostream>
#include<unordered_map>

using namespace std;

int main()
{
    unordered_map<int, string> umap{
        {1, "hello"},
        {2, "world"},
        {3, "everyone"}
    };

    auto itr = umap.cbegin();
    while(itr != umap.cend())
    {
        cout << itr->first << " " << itr->second << endl;
        itr++;
    }

    return 0;
}

输出结果为:

1 hello
2 world
3 everyone

在该示例代码中,我们创建了一个键为int类型值为string类型的unordered_map容器umap,并使用迭代器遍历了整个容器,输出了每个元素的键值对。

示例3

#include <iostream>
#include <unordered_map>

using namespace std;

int main()
{
    unordered_map<string, string> mymap = { {"Peter","Director"}, {"Ana", "Manager"}, {"Ela","Employee"}};

    for(unordered_map<string, string>::const_iterator it = mymap.cbegin(); it != mymap.cend(); ++it )
    {
        cout << it->first << " => " << it->second << '\n';
    }

    return 0;
}

输出结果为:

Ana => Manager
Ela => Employee
Peter => Director

在该示例代码中,我们创建了一个字符串类型的unordered_map容器mymap,并使用const_iterator类型的迭代器输出容器的所有元素。

结论

通过使用cend()函数,我们可以轻松地遍历unordered_map容器中的所有元素。并且由于cend()返回的是指向不可变元素的指针,因此我们不会无意中修改容器中的元素。因此,cend()函数是STL中非常实用的函数之一,在我们使用unordered_map容器时应当充分利用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 教程