STL pair 常见用法详解

《算法笔记》学习笔记

pair 常见用法详解

//pair是一个很实用的”小玩意“,当想要将两个元素绑在一起作为一个合成元素,
//又不想因此定义结构体时,使用pair可以很方便地作为一个替代品。
//也就是说,pair实际上可以看作一个内部有两个元素地结构体,
//且这两个元素的类型是可以指定的。
struct pair {
    typename1 first;
    typename2 second;
};

1. pair的定义

//要使用pair,应先添加头文件#include <utility>,并在头文件下面加上"using namespace std"
//注意:由于map的内部实现中涉及pair,因此添加map头文件时会自动添加utility头文件
//此时如果需要使用pair,就不需要额外再添加utility头文件

//pair有两个参数,分别对应first和second的数据类型,它们可以是任意基本数据类型或容器
//定义
pair<typeName1, typeName2> name;
//定义参数为string和int类型的pair
pair<string, int> p;
//初始化
pair<string, int> p("haha", 5);

//临时构建一个pair,有两种方法
//<1> 将类型定义写在前面,后面用小括号内两个元素的方式
pair<string, int> ("haha", 5)

//<2> 使用自带的make_pair函数
make_pair("haha", 5)

2. pair中元素的访问

//pair中有两个元素,分别是first和second,只需要按正常结构体的方式去访问即可。
#include <iostream>
#include <utility>
#include <string>
using namespace std;
int main() {
    pair<string, int> p;
    p.first = "haha";
    p.second = 5;
    cout << p.first << " " << p.second << endl;
    p = make_pair("xixi", 55);
    cout << p.first << " " << p.second << endl;
    p = pair<string, int>("heihei", 555);
    cout << p.first << " " << p.second << endl;
    return 0;
}

3. pair 常用函数实例解析

比较操作数

//两个pair类型数据可以直接使用 ==, !=, <, <=, >, >= 比较大小,比较规则先以first的大小作为标准
//只有当first相等时才去判别second的大小
#include <cstdio>
#incldue <utility>
using namespace std;
int main() {
    pair<int, int> p1(5, 10);
    pair<int, int> p2(5, 15);
    pair<int, int> p3(10, 5);
    if(p1 < p3) printf("p1 < p3\n");
    if(p1 <= p3) printf("p1 <= p3\n");
    if(p1 < p2) printf("p1 < p2\n");
    return 0;
}

4. pair的常见用途

  • 用来提代二元结构体及其构造函数,可以节省编码时间
  • 作为map的键值对来进行插入
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
    map<string, int> mp;
    mp.insert(make_pair("heihei", 5));
    mp.insert(pair<string, int>("haha", 10));
    for(map<string, int>::iterator it = mp.begin(); it != mp.end(); it++) {
        cout << it -> first << " " << it -> second << endl;
    }
    return 0;
}
posted @ 2019-09-28 20:07  哨音  阅读(804)  评论(0编辑  收藏  举报