c语言结构体keypair,C++STL之Pair类模板

1. 简介

Pair表示“一对”的意思,pair将两个数据合成一组数据,在如下两种变成情况中,我们更加常见与使用pair,第一是使用STL中的map(在上一节讲过),对于map而言,key和value需要分开来进行使用和声明,使用pair可以合二为一(但是数据输出时依旧要分离),第二则是当我们的函数需要返回两个数据的时候,可以使用pair。

Pair的实现是一个结构体而不是一个类因此可以直接使用pair的成员变量。

总结一下:pair将一对值(可以有不同的数据类型)和为一个值

2. 相关文件

标准头文件 #include。

但是笔者亲测在编译器可以不声明这个头文件而直接使用,貌似在C++中,pair被放入了std命名空间中了。

3. 初始化

格式为:

template struct pair;

在现实情况中我们可以像类似于STL创建新容器一样创建pair也可以直接使用,如下:pair p;

pair p(10,20);

或者是:map m;

m.insert(pair('a',10));

明白了如何初始化,接下来谈一下如何使用以及方法。

对与pair中的两个元素,我们可以使用first和second来进行访问,顾名思义first返回第一个元素,而second返回第二个元素,如:pair p(10,20);

cout<

4. make_pair:

函数原型template pair make_pair(T1 a, T2 b) { return pair(a, b); }

我们可以通过make_pair生成我们的所需要的pair,对于一般的pair而言,我们如果需要对其进行赋值,则需要pair p;

p.first=10,p.second=20;

但如果我们使用make_pair方法,则可以变成如下内容:pair p;

p=make_pair(10,20);

可以看见,使用make_pair不仅仅让我们免去了对两个变量进行分开来的访问赋值,同时make_pair也智能的接受变量的类型,不需要再度指定,也就是说,make_pair本身是接受隐式类型转换的,比如定义的是一个int类型,使用make_pair传入一个float类型的参数,make_pair不会报错,而是回自动的进行一个类型转换,将float变为int,这样可以获得更高的灵活度,同时也会有一些小问题。

5.相关题目

1096题扫雷(注意,该题目为英文题)

与较难的BFS类型题目不同,本题不需要有BFS这样的搜索思路,而且本题目涉及到一个重要的内容,就是坐标,(x,y)在这类型的题目中,二维坐标往往采用一对数据进行表示,而本题目可以给自己增加要求,使用pair进行坐标的存储运算。

6. 举例——函数多返回值:#include

#include

#include

using namespace std;

pair getClass(int id){

return make_pair("DOTCPP!",id);

}

int main(int argc,char **argv){

pair a;

a=getClass(10);

cout<

return 0;

}

输出内容:DOTCPP! 10

你可能感兴趣的:(c语言结构体keypair)