📜  pair 和 int 的 unordered_map - C++ (1)

📅  最后修改于: 2023-12-03 15:18:13.437000             🧑  作者: Mango

C++中使用pair和int的unordered_map

在C++中,unordered_map是一种特殊的映射容器,可以用于存储键-值对。pair是C++ STL库中的一个类,它可以用来表示两个不同的数据类型的值作为一个单元。本文将介绍如何在C++中使用pair和int的unordered_map。

unordered_map

unordered_map是一种无序的映射容器,它将键(key)映射到值(value)。 C++11引入了这种数据结构。使用unordered_map,可以轻松地管理诸如键值对之类的映射类型的键值,而不需要手动跟踪每个键之间的关系。

unordered_map的定义方式如下:

std::unordered_map<int, std::string> umap;

上面的代码定义了一个名为umap的unordered_map,其中键的类型为int,值的类型为string。也可以使用pair定义键值对:

std::unordered_map<std::pair<int, int>, std::string> umap;
pair

C++ STL库的pair类可以用来存储任意两种数据类型的值作为一对,具体形式为(pair<类型1,类型2>)。请看下面一个例子:

std::pair<int, std::string> myPair(1, "Hello");

以上代码声明并初始化了一个pair,其中第一个元素的类型为int,第二个元素的类型为string。可以使用.first和.second访问pair的两个元素:

std::cout << myPair.first << " " << myPair.second << std::endl; //输出:1 Hello

将pair作为unordered_map的键:

std::unordered_map<std::pair<int, int>, std::string> umap;
umap[{1, 2}] = "Hello";
std::cout << umap[{1, 2}] << std::endl; //输出:Hello
示例代码

下面是使用pair和int的unordered_map的一个示例代码:

#include <iostream>
#include <unordered_map>

int main()
{
    std::unordered_map<std::pair<int, int>, std::string> umap;
    std::pair<int, int> myPair(1, 2);
    umap[myPair] = "Hello";
    umap[{2, 3}] = "World";
    std::cout << umap[myPair] << std::endl; //输出:Hello
    std::cout << umap[{2, 3}] << std::endl; //输出:World

    std::unordered_map<int, std::string> umap2;
    umap2[1] = "Hello";
    umap2[2] = "World";
    std::cout << umap2[1] << std::endl; //输出:Hello
    std::cout << umap2[2] << std::endl; //输出:World

    return 0;
}

该程序创建了两个unordered_map,一个使用pair作为键,一个使用int作为键。在输出中,本文展示了如何访问这些映射的值。

结论

使用pair和int的unordered_map可以扩展C++ STL库中的映射数据结构。通过使用pair来定义索引,可以更好地表示这些键。unordered_map作为一个容器可用于存储键-值对,从而使映射类型的工作变得更加容易。