0
点赞
收藏
分享

微信扫一扫

WPS制作表格热图

技术只适用于干活 04-15 21:30 阅读 2

在这里插入图片描述

pair 数对🍗

pair是一个模板类,使用时需要引用文件

#include <utility>//通用工具

pair可将两个value处理为一个元素。C++标准库内多处用到了这个结构。尤其容器 map、unordered_map和unordered_multimap就是使用pair来管理其内部元素(key_value),任何函数如果需返回两个 value,也需要用到pair,例如minmax()。
pair是定义在std中的struct,其成员是公有的(public)。


namespace std {
    template <typename T1typename T2>
    struct pair {
    T1 first; //成员1
    T2 second;//成员2
    ...
	};
}

操作函数🍗

pair<T1,T2> p
创建一个空的pair数对,两个成员都是T1,T2的默认值
pair<T1,T2>p(val1,val2)
创建一个pair数对,以val1和val2为其初值
pair<T1,T2>p2(p1)
利用拷贝构造创建p2
p2 = p1
把p1的值赋值给p2
make_pair(val1,val2)
返回一个由val1和val2构造的pair数对
p.first
访问p的第一个成员
p.second
访问p的第二个成员
get<0>§
等价p.first
get<1>§
等价p.second
p1 == p2
判断两个pair是否相等
p1 != p2
判断两个pair是否不相等
,>=,<,<=
判断两个pair的大小关系(先比较first,如果相等再比较second)
p1.swap(p2)
交换两个pair的元素


pair应用举例🍗

pair的基本操作举例:

#include <utility>
using namespace std;

int main()
{
    pair<int, double>p1;//创建一个空的pair
    //注意访问first和second时没有()
    cout << "p1=(" << p1.first << "," << p1.second <<")" << endl;

    pair<int, double>p2(10,23.4);//创建一个pair,数据为(10,23.4)
    cout << "p2=(" << p2.first << "," << p2.second << ")" << endl;

    pair<int, double>p3(p2);//通过p2拷贝构造一个p3
    p3.first = 100;
    cout << "p3=(" << p3.first << "," << p3.second << ")" << endl;

    p1 = p3;//把p3赋值给p1
    cout << "p1 = p3后" << endl;
    cout << "p1=(" << p1.first << "," << p1.second << ")" << endl;

    p3 = make_pair(100,200);
    cout << "p3 = make_pair(100,200)后" << endl;
    //通过get访问p3的成员
    cout << "p3=(" << get<0>(p3) << "," << get<1>(p3) << ")" << endl;

    return 0;
}

#include <utility>    
using namespace std;    
pair<int, int> MinMax(int* arr, int len)//找到数组的最小值和最大值




{
    int min = arr[0]; //最小值    
    int max = arr[0];//最大值    
    for (int i = 1; i < len; i++)    
        {
            if (arr[i] < min)    
                min = arr[i];    
            if (arr[i] > max)    
                max = arr[i];    
        }
    return make_pair(min,max);    
}

int main()    
{
    int arr[] = {3,1,8,9,34,2,67,5,70,12,34,65,99,20};    
    auto p = MinMax(arr,sizeof(arr)/sizeof(arr[0]));    
    cout << "最小值:" << p.first << ",最大值:" << p.second << endl;    

    return 0;    

本篇完!🍗

举报

相关推荐

0 条评论