最近刷题的过程中,特别是BFS的题,看到了比较好的一个方法
我平时在写BFS的时候,是通过建立一个结构体,然后将队列的类型保存为结构体类型
后来看解题过程,发现了一个很方便的小技巧,不需要建立结构体,而直接将一对坐标入队
那就是pair
来看一下是什么如此巧妙的方法
类模板:template
struct pair 参数:T1是第一个值的数据类型,T2是第二个值的数据类型。
功能:pair将一对值组合成一个值,这一对值可以具有不同的数据类型(T1和T2),两个值可以分别用pair的两个公有函数first和second访问。
具体用法:
1、定义
pairp1; //使用默认构造函数 pair p2(1, 2.4); //用给定值初始化 pair p3(p2); //拷贝构造函数
这里一般我们就用第一个就好了
2.访问
访问两个元素(通过first和second):
pairp1; //使用默认构造函数 p1.first = 1; p1.second = 2.5; cout << p1.first << ' ' << p1.second << endl;
输出结果:1 2.5
3.赋值(1)利用make_pair:
pairp1; p1 = make_pair(1, 1.2);
(2)变量间赋值:
pair4.使用p1(1, 1.2); pair p2 = p1;
光看懂了可不管用,我们得具体使用它才能更好的掌握
举一个例子,pair充当结构体保存x、y坐标变量,配合BFS来解题
我们可以进行如下的定义:
queue>q; q.push(make_pair(x,y));
具体到题目中请点击链接
是不是特别好用特别妙,学起来~~~



