蓝桥杯基础知识6 pair

蓝桥杯基础知识6 pair

pair 的定义和结构:在C++中,pair是一个模板类,用于表示一对值的组合,头文件<utility>。

pair类 的定义:

template<class T1, class T2>
struct pair{T1 first;    // 第一个值T2 second;    // 第二个值// 构造函数pair();pair(const T1& x, const T2& y);// 比较运算符重载bool operator == (const pair& rhs) const;bool operator == (const pair& rhs) const;// 其他成员函数和特性// ...
};    

 

pair 类模板 有两个模板参数T1 和 T2,分别表示第一个值 和 第二个值的类型;

有两个成员变量,fist 和 second,分别表示 第一个值 和 第二个值;。

pair 类有一些成员函数 和 特性,例如默认构造函数、带参数的构造函数、比较运算符重载等。

使用pair 类,可以方便地将两个值组合在一起,并进行传递、存储 和 操作。

#include<iostream>
#include<utility>int main(){std::pair<int, double> p1(1, 3.14);std::pair<char, std::string> p2('a', "hello");std::cout << p1.first << "," << p1.second << std::endl;std::cout << p2.first << "," << p2.second << std::endl;return 0;
}    

创建两个pair 对象,分别包含不同类型的值,分别访问并输出对象 p1 、p2 的 first 和 second 成员变量的值。

pair 的嵌套:将一个 pair 对象作为另一个 pair 对象的成员。

#include<iostream>
#include<utility>int main(){std::pair<int, int> p1(1, 2);std::pair<int, std::pair<int, int>> p2(3, std::make_pair(4, 5));std::pair<std::pair<int, int>, std::pair<int, int>> p3(std::make_pair(6, 7), std::make_pair(8, 9));std::cout << p1.first << "," << p1.second << std::endl;std::cout << p2.first << "," << p2.second.first << p2.second.second << std::endl;std::cout << p3.first .first <<"," << p3.first.second << "," << p3.second.first << p3.second.second << std::endl;return 0; 
}

pair自带的排序规则:按照first成员升序排序,若first成员相等,则按照second 成员升序排序。

#include<iostream>
#include<utility>
#include<vector>
#include<algorithm>int main(){std::vector<std::pair<int, int>> vec;vec.push_back(std::make_pair(3, 2));vec.push_back(std::make_pair(1, 4));vec.push_back(std::make_pair(2, 1));std::sort(vec.begin(), vec.end());for(const auto& p : vec){std::cout << p.first << "," << p.second << std::endl;}    // 1,4  2,1  3,2return 0;}

 

创建一个存储 pair 对象的向量 vec,包含三个pair对象。

#include<iostream>
#include<utility>
#include<vector>// 定义一个结构体,表示一个人的信息
struct Person{std::string name;int age;
};int main(){// 创建一个存储Person对象的向量std::vector<Person> people;// 添加一些Person对象到向量中people.push_back({"Alice", 25});people.push_back({"Bob", 30});people.push_back({"Charlie", 20});// 创建一个存储pair的向量,每个pair包含一个Person对象和一个评分std::vector<std::pair<Person, int>> scores;// 添加一些pair到向量中scores.push_back({people[0], 90});scores.push_back({people[1], 85});scores.push_back({people[2], 95});// 遍历pair向量,并输出每个人的姓名、年龄 和 评分for(const auto& pair : scores){std::cout << "Name: " << pair.first.name << std::endl;std::cout << "Age: " << pair.first.age << std::endl;std::cout << "Score: " << pair.second << std::endl;}return 0;}

C++ 在线工具 | 菜鸟工具 (jyshare.com)

Name: Alice
Age: 25
Score: 90
Name: Bob
Age: 30
Score: 85
Name: Charlie
Age: 20
Score: 95

可拓展学习:

C++ pair的基本用法总结(整理)_c++ pair用法-CSDN博客

C++中push_back()函数_pushback函数-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/669869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

输出超级玛丽2_题解

【题解提供者】吴立强 解法 思路 本题代码非常简单&#xff0c;直接一行一行对齐后输出即可&#xff0c;只是比较麻烦。 代码展示 #include <iostream> using namespace std;int main() {printf(" ********\n");printf(" …

软件漏洞概念与原理

本文已收录至《全国计算机等级考试——信息 安全技术》专栏 官方定义 漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷&#xff0c;从而可以使攻击者能够在未授权的下访问或破坏系统。 基本理解 漏洞是硬件、软件、协议在生命周期的各个阶段&#xff08;设计…

小程序之一———— 文件重命名

使用python程序对文件进行集体重命名 1&#xff1a;为什么要写这个&#xff1f;2&#xff1a;书写思路3&#xff1a; 程序主体 1&#xff1a;为什么要写这个&#xff1f; 因为收到一堆文件&#xff0c;但是命名方式是 12427823_这是书名.pdf 这样的&#xff0c;不方便查看&…

普通编程,机器学习与深度学习

普通编程&#xff1a;基于人手动设置规则&#xff0c;由输入产生输出经典机器学习&#xff1a;人手工指定需要的特征&#xff0c;通过一些数学原理对特征与输出的匹配模式进行学习&#xff0c;也就是更新相应的参数&#xff0c;从而使数学表达式能够更好的根据给定的特征得到准…

十大排序算法之线性时间比较类排序

线性时间比较类排序 线性时间的算法执行效率也较高&#xff0c;从时间占用上看&#xff0c;线性时间非比较类排序要优于非线性时间排序&#xff0c;但其空间复杂度较非线性时间排序要大一些。因为线性时间非比较类排序算法会额外申请一定的空间进行分配排序&#xff0c;这也是…

Java 学习和实践笔记(1)

2024年&#xff0c;决定好好学习计算机语言Java. B站上选了这个课程&#xff1a;【整整300集】浙大大佬160小时讲完的Java教程&#xff08;学习路线Java笔记&#xff09;零基础&#xff0c;就从今天开始学吧。 在这些语言中&#xff0c;C语言是最基础的语言&#xff0c;绝大多…

Blender_pmx导出fbx

Blender_pmx导出fbx 学无止境&#xff1f; 相关链接&#xff1a; Blender教程&#xff1a; Blender中文手册介绍 — Blender Manualhttps://docs.blender.org/manual/zh-hans/2.79/about/introduction.htmlhttps://www.blendercn.org/https://www.blendercn.org/Blender下载…

1978-2023年全国整体GDP平减指数计算模板(含计算公式代码+计算结果且可任意调整基期)

1978-2023年全国整体GDP平减指数、实际GDP数据&#xff08;可任意调整基期&#xff09; 1、时间&#xff1a;1978-2023年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;名义GDP、实际GDP、国内生产总值指数、GDP平减指数 4、数据内含原始数据计算公式代码&…

OpenStack-Swift分片存储

1.规划节点 IP主机名节点192.168.100.10controllerOpenStack控制节点192.168.100.20computeOpenStack计算节点 2.环境准备​ 使用OpenStack平台的两台节点&#xff0c;自行使用脚本安装Swift对象存储服务。然后使用这两台进行实验。节点规划表中的IP地址为作者的IP地址&#…

JVM 性能调优 - JVM 参数基础(2)

查看 JDK 版本 $ java -version java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode) 查看 Java 帮助文档 $ java -help 用法: java [-options] class [args...] …

牛客“迎新春,过大年”多校程序设计竞赛A题

题目描述&#xff1a; 这里有个小trick 当时也看到数据范围的问题了 n 是 1 e 6 ∑ i 1 n a [ i ] < 5 e 7 n是1e6 \quad \sum_{i1}^na[i]<5e7 n是1e6∑i1n​a[i]<5e7 我们考虑不同的数 1 2 . . . k − 1 k 1 \quad 2 \quad ... k-1 \quad k 12...k−1k s u m …

【UE 材质】扇形材质

目录 效果 步骤 &#xff08;1&#xff09;控制扇形的弧宽度 &#xff08;2&#xff09;控制扇形的角度 &#xff08;3&#xff09;完整节点 效果 步骤 &#xff08;1&#xff09;控制扇形的弧宽度 创建一个材质&#xff0c;混合模式设置为“Additive”&#xff0c;着色…

论文阅读——MP-Former

MP-Former: Mask-Piloted Transformer for Image Segmentation https://arxiv.org/abs/2303.07336 mask2former问题是&#xff1a;相邻层得到的掩码不连续&#xff0c;差别很大 denoising training非常有效地稳定训练时期之间的二分匹配。去噪训练的关键思想是将带噪声的GT坐标…

【c++】跟webrtc学引用计数

rtc::RefCountInterface 接口类 G:\CDN\rtcCli\m98\src\rtc_base\ref_count.h引用计数想形成一种树状结构 // Interfaces where refcounting is part of the public api should // inherit this abstract interface. The implementation of these // methods is usually provid…

linux系统mysql数据库使用keepalived做高可用

mysql使用keepalived做高可用 mysqlkeepalived主库服务器配置从库服务器配置两台服务器安装 mysqlkeepalived 先做两台服务器数据库互为主从 主库服务器配置 开启binlog服务 mkdir -pv /data/ //创建存放binlog日志目录 chown mysql.mysql /data //修改目录所有者和…

抖音直播总是被提示违规怎么办?直播违规操作怎么补救?

一、抖音直播总是被提示违规怎么办 了解违规原因&#xff1a;首先&#xff0c;要仔细阅读抖音给出的违规提示&#xff0c;了解具体是哪些行为或内容导致了违规。这样&#xff0c;才能有针对性地调整直播策略。 遵循平台规则&#xff1a;熟悉并严格遵循抖音的直播规则是避免违…

单片机和 ARM 的区别

单片机和 ARM 在功能和使用上有一些区别&#xff0c;因此哪个更好用取决于具体的需求和场景。 单片机是一种集成了微处理器、存储器和外设接口的集成电路芯片&#xff0c;通常具有体积小、功耗低、可靠性高、成本低等特点。单片机广 泛应用于各种领域&#xff0c;如智能仪表、工…

Flink CDC 与 Kafka 集成:State Snapshot 还是 Changelog?Kafka 还是 Upsert Kafka?

我们知道,尽管 Flink CDC 可以越过 Kafka,将关系型数据库中的数据表直接“映射”成数据湖上的一张表(例如 Hudi 等), 但从整体架构上考虑,维护一个 Kafka 集群作为数据接入的统一管道是非常必要的,这会带来很多收益。 在 Flink CDC 之前,以 Debezium + Kafka Connect …

第2节、让电机转起来【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍用简单的方式&#xff0c;让步进电机转起来。其目的之一是对电机转动有直观的感受&#xff0c;二是熟悉整个开发流程。本系列教程必要的51单片机基础包括IO口操作、中断、定时器三个部分&#…

【2024年5月备考新增】《软考高项论文专题 (10)进度管理(合集)》

1 论文基础 1.1 写作要点 过程定义、作用写作要点、思路规划进度管理规划进度管理是为规划、编制、管理、执行和控制项目进度而制定政策、程序和文档的过程。作用:为如何在整个项目期间管理项目进度提供指南和方向。进度管理计划的内容、重要性、编写原则。定义活动定义活动是…