• C++ pair的基本用法


    pair 的应用

    pair 是将2个数据组合成一个数据,当需要这样需求时就可以使用pair。
    这个呢好比 STL 中的 map, 因为 map 也是将key 和 value 放在一起来保存的。
    在这里呢,我们要清楚的一点就是,如果我们需要将2个数据组合成一个数据或者需要一个函数需返回2个数据的时候,可以选择 pair 来进行存储数据。

    pair 的具体构造

    std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。例如std::pair 或者 std::pair等。pair实质上是一个结构体,其主要的两个成员变量是first和second,这两个变量可以直接使用。初始化一个pair可以使用构造函数,也可以使用std::make_pair函数,make_pair函数的定义如下:

    template pair make_pair(T1 a, T2 b) {
    return pair(a, b);
    }

    一般make_pair都使用在需要pair做参数的位置,可以直接调用make_pair生成pair对象。 另一个使用的方面就是pair可以接受隐式的类型转换,这样可以获得更高的灵活度。但是这样会出现如下问题:例如有如下两个定义:

    std::pair(1, 1.1);
    std::make_pair(1, 1.1);

    其中第一个的second变量是float类型,而make_pair函数会将second变量都转换成double类型。这个问题在编程是需要引起注意。

    刷题时会用下面几点即可:

    上面的pair 构造看样子有些复杂,我想在这里说明一下,如果我们要是不是为了将来找C++相关的工作的话,咱们没必要懂这些原理,
    平时刷题用好以下几个受用方法就足够了(要是你想更好的了解pair 自行查阅资料吧)
    1.在 pair 中取元素
    2.自定义 pair 或者 直接调用make_pair生成pair对象

    具体怎么实现,怎么用?通过下面的实例来说明:

    实例:

    #include 
    #include 
    #include 
    using namespace std;
    int main () {
    pair <string,double> product1 ("tomatoes",3.25);
    pair <string,double> product2;    //定义pair
    pair <string,double> product3;  
    product2.first ="lightbulbs"; // type of first is string
    product2.second =0.99; // type of second is double 
    product3 = make_pair ("shoes",20.0);   //直接调用make_pair生成pair对象
    cout << product1.first <<" is $"<< product1.second <<"\n";
    cout << product2.first <<" is $"<< product2.second <<"\n";
    cout<< product3.first <<" is $"<< product3.second <<"\n";
    return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

  • 相关阅读:
    效率提升一键完成房产小程序源码揭秘高效业务流程优化
    流体的压力
    Js逆向教程-06js逆向断点的种类及介绍
    【计算机网络复习】第六章 关系数据理论 1
    如何修改CentOS登录时默认目录
    web3案例中解决交易所中 ETH与token都是0问题 并帮助确认展示是否成功
    Flutter: 自动登录
    成都建筑模板批发市场在哪?
    安卓场景开发(一) 引导页面
    Redis Cluster Gossip Protocol: FAIL, UPDATE
  • 原文地址:https://blog.csdn.net/m0_52318340/article/details/126777258