当前位置: 首页 > news >正文

蓝桥杯基础知识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.lryc.cn/news/296604.html

相关文章:

  • 后端返回给前端的数据格式有哪些?
  • Transformer的PyTorch实现之若干问题探讨(一)
  • 系统参数SystemParameters.MinimumHorizontalDragDistance
  • 平屋顶安装光伏需要注意哪些事项?
  • 《Git 简易速速上手小册》第7章:处理大型项目(2024 最新版)
  • 从0开始学Docker ---Docker安装教程
  • 嵌入式学习之Linux入门篇笔记——15,Linux编写第一个自己的命令
  • 【C语言】SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)
  • C++实现鼠标点击和获取鼠标位置(编译环境visual studio 2022)
  • Matplotlib绘制炫酷散点图:从二维到三维,再到散点图矩阵的完整指南与实战【第58篇—python:Matplotlib绘制炫酷散点图】
  • Docker-Learn(一)使用Dockerfile创建Docker镜像
  • 问题:银行账号建立以后,一般需要维护哪些设置,不包括() #学习方法#经验分享
  • 教授LLM思考和行动:ReAct提示词工程
  • FPGA_工程_按键控制的基于Rom数码管显示
  • WordPress Plugin HTML5 Video Player SQL注入漏洞复现(CVE-2024-1061)
  • 【Kotlin】Kotlin基本数据类型
  • UDP端口探活的那些细节
  • 拦截器配置,FeignClient根据业务规则实现微服务动态路由
  • 预测模型:MATLAB线性回归
  • 【人工智能】神奇的Embedding:文本变向量,大语言模型智慧密码解析(10)
  • Redis + Lua 实现分布式限流器
  • ruoyi若依框架SpringSecurity实现分析
  • Habitat环境学习四:Habitat-sim基础用于导航——使用导航网格NavMesh
  • python学习笔记 -- 字符串
  • 2024年GPT如何发展?
  • 从REPR设计模式看 .NET的新生代类库FastEndpoints的威力
  • 前端入门:(五)JavaScript 续
  • 研究多态恶意软件,探讨网络安全与AI
  • linux驱动工作原理
  • Rust语言入门(第3篇)