zoukankan      html  css  js  c++  java
  • 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
    ");
        if(p1 <= p3) printf("p1 <= p3
    ");
        if(p1 < p2) printf("p1 < p2
    ");
        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;
    }
    
  • 相关阅读:
    适配不同屏幕的宏
    phpstrom 10 激活
    php三维数组去重
    Ajax总结
    Node.js中处理异步编程(使用回调处理一次性事件,使用事件监听器处理重复性事件)
    JavaScript中函数对象的call()和apply()方法的总结
    jQuery中prop()方法和attr()方法可能遇到的问题小结
    Node.js中url的parse、format、resolve方法详解
    处理跨域方式
    JS获取网页窗口大小、浏览器窗口大小、页面元素位置
  • 原文地址:https://www.cnblogs.com/isChenJY/p/11604641.html
Copyright © 2011-2022 走看看