首页 > 其他分享 >pair

pair

时间:2024-03-02 18:00:09浏览次数:19  
标签:people back push scores pair 排序

pair的定义和结构

  • 模板类
  • 一对值的组合
  • 头文件<utility>
  1. 两个模板参数,T1和T2,分别表示第一个值和第二个值的类型
  2. 两个成员变量,first和second,分别表示第一个和第二个
  3. 有一些成员函数和特性
  • 默认构造函数
  • 带参数的构造函数
  • 比较运算符重载
  1. 可以将两个值组合在一起进行传递,存储,操作(组合在一起作为函数的返回值,或者将一堆值存储在容器中)
#include <bits/stdc++.h>
using namespace std;
int main()
{
    pair<int,double> p1(1,3.14);
    pair<char,string> p2('a',"hello");
    cout << p1.first<<' ' << p1.second <<endl;
    cout << p2.first<<' ' << p2.second <<endl;
    return 0;
}

pair的嵌套

  • pair可以进行嵌套,可以将一个pair对象作为另一个pair对象的成员.
  • 通过嵌套pair,你可以方便的组合多个值,并形成更复杂的数据结构
pair<int,int> p1(1,2);
pair<int,pair<int,int>> p2(3,make_pair(4,5));
pair<pair<int,int>,pair<int,int>> p3(make_pair(6,7),make_pair(8,9));

pair自带排序规则

  • pair自带的排序规则是按照first成员进行升序排列的
  • first成员相等,则按照second成员进行升序排列
  • 如果要按照其他排序规则对pair进行排序,可以自定义比较函数或者使用lambda表达式传递排序算法

代码示例

#include <bits/stdc++.h>
using namespace std;
//建立结构体
struct Person{
    string name;
    int age;
};
int main()
{//建立一个容器来存放结构体
    vector<Person>people;
    //给容器插入值
    people.push_back({"Alice",25});
    people.push_back({"Bob",30});
    people.push_back({"Charlie",20});
    //再建一个结构体,将pair插入
    vector<pair<Person,int>> scores;
    //插入值
    scores.push_back({people[0],90});
    scores.push_back({people[1],87});
    scores.push_back({people[2],95});
    for(const auto& pair : scores){
        cout << "Name:" << pair.first.name << endl;
        cout << "Age:" << pair.first.age << endl;
        cout << "Score:" << pair.second << endl;
        cout << endl;
    }
}

错误麻烦评论区指出

标签:people,back,push,scores,pair,排序
From: https://www.cnblogs.com/777CC/p/18048994

相关文章

  • [ABC217F] Make Pair 题解
    [ABC217F]MakePair题解思路解析通过\(n\le200\)和“选出的两个学生离开队列,空出来的位置左右合拢”这两个细节可以想到能用区间dp做,\(f_{i,j}\)表示将\(i\toj\)这个区间全部选完的方案数,然后常规区间dp,加一个判断如果当前区间\([l,r]\)中\(l,r\)是朋友,就可......
  • 数组关系_ABC342_D - Square Pair
    目录问题概述思路想法参考代码问题反思问题概述原题参考:D-SquarePair对于长度为n的数组,给出满足要求的数对对数:i<ja[i]*a[j]是一个平方数思路想法其实和以前的数组关系那题差不多,也是找关系,就是关系找不出来而已,对于两数相乘为平方数应该怎么考虑,可以知道对于任意数......
  • [ABC342D] Square Pair 题解
    洛谷传送门原题传送门题意给出一个数列\(A\),求出满足\(A_iA_j\)为完全平方数的无序数对\((i,j)\)的个数。分析容易想到(但是我在昨晚没想到,可以原地AFO了),对于每个数,如果是\(0\)的话可以直接统计答案(记录\(0\)的个数\(cnt\),最后\(ans\leftarrowans+cnt(n-cnt)+\f......
  • 洛谷题单指南-贪心-P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G
    原题链接:https://www.luogu.com.cn/problem/P1090题意解读:两两合并,是典型的哈夫曼编码算法思想,贪心即可。解题思路:要是合并体力消耗最少,就要让尽可能少的果子越晚合并越好,因此,贪心策略为优先选择数量最少的两堆果子合并,一直到剩下一堆果子,把合并过程中的消耗值累加即可,要快速......
  • D. Divisible Pairs
    原题链接题解如果\((a_i+a_j)\mod\x==0\)那么\((a_i\mod\x+a_j\mod\x)\mod\x==0\)如果\((a_i-a_j)\mod\y==0\)那么\(a_i\mod\y==a_j\mod\y\)所以我们可以把每个\(a\)的求模情况存下来,\(a[i]\)的贡献为其前面的\(a\)出现的对应求模情况数量\(co......
  • 数组元素关系映射——cf_925_D. Divisible Pairs
    目录问题概述思路分析参考代码做题反思问题概述原题参考:D.DivisiblePairs给出整数n、x、y和长度为n的数组,要求求出数组中满足以下关系的数对x|ai+ajy|ai-aji<j思路分析刚开始看到这个题的时候觉得没思路,坐牢卡半天发现感觉是对的(裂开)。题解给的是map的做法,看完之......
  • pair
    为模板类,用于表示一对值的组合。位于<utility>头文件中如pair<int,string>pa(3,"Mike");pair可以将两个值组合,并进行传参,返回等操作。pair的定义与结构pair的成员变量可以为结构体类型pair有两个成员变量first与second例:pair<int,double>p1(1,3.14);pair<char,stri......
  • Table '.\mysql\proc' is marked as crashed and should be repaired 报错
    Table'.\MySQL\proc'ismarkedascrashedandshouldberepaired报错 解决方法:找到mysql的安装目录的bin/myisamchk工具,在命令行中输入:myisamchk-c-r../data/mysql/proc.MYI然后myisamchk工具会帮助你恢复数据表的索引。重新启动mysql,问题解决。......
  • 2024-01-10:用go语言,给你一个下标从 0 开始的二维整数数组 pairs 其中 pairs[i] = [sta
    2024-01-10:用go语言,给你一个下标从0开始的二维整数数组pairs其中pairs[i]=[starti,endi]如果pairs的一个重新排列满足对每一个下标i(1<=i<pairs.length)都有endi-1==starti,那么我们就认为这个重新排列是pairs的一个合法重新排列。请你返回任意一个pairs的......
  • 【C++】STL 容器 - set 集合容器 ⑥ ( pair 对组简介 | pair 对组元素访问 | set 集合
    文章目录一、pair对组1、pair对组简介2、pair对组元素访问3、代码示例-pair对组4、set集合容器存储pair对组元素二、set集合容器insert插入结果类型-pair对组1、std::set#insert函数原型分析2、代码示例-std::set#insert函数插入元素结果分析一、pair对组1......