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

C++:std::pair的定义及用法

std::pair 是 C++ 标准库中的一个模板类,用于将两个不同类型的值组合在一起。它在 <utility> 头文件中定义。std::pair 可以存储一对相关的数据项,可以是不同类型的数据,也可以是相同类型的数据。它通常用于返回多个值的函数,或者在需要将两个相关的值一起处理的场景中。

可以简单理解为python中大小为2的元祖

std::pair 的定义

#include <utility> // 包含 std::pair 的定义template <typename T1, typename T2>
struct pair {T1 first;  // 第一个元素T2 second; // 第二个元素// 默认构造函数pair();// 带参数的构造函数pair(const T1& a, const T2& b);// 拷贝构造函数pair(const pair& other);// 移动构造函数pair(pair&& other) noexcept;// 赋值运算符pair& operator=(const pair& other);pair& operator=(pair&& other) noexcept;
};

成员变量

  • first:第一个元素,类型为 T1
  • second:第二个元素,类型为 T2

构造函数

  • 默认构造函数pair() 初始化 firstsecond 为默认值。
  • 带参数的构造函数pair(const T1& a, const T2& b) 用给定的值初始化 firstsecond
  • 拷贝构造函数:用于复制 std::pair 对象。
  • 移动构造函数:用于将另一个 std::pair 对象的资源转移到新对象中。
  • 赋值运算符:用于赋值操作,包括拷贝赋值和移动赋值。

常见操作

  1. 创建和初始化 std::pair

#include <iostream>
#include <utility> // 包含 std::pairint main() {std::pair<int, std::string> p1(1, "apple"); // 创建一个 pair<int, std::string>std::cout << "First: " << p1.first << ", Second: " << p1.second << std::endl;std::pair<int, std::string> p2; // 使用默认构造函数p2.first = 2;p2.second = "banana";std::cout << "First: " << p2.first << ", Second: " << p2.second << std::endl;return 0;
}

   2. 使用 std::make_pair 创建 std::pair

#include <iostream>
#include <utility> // 包含 std::pair 和 std::make_pairint main() {auto p = std::make_pair(3, "cherry"); // 自动推断类型std::cout << "First: " << p.first << ", Second: " << p.second << std::endl;return 0;
}

3.比较 std::pair

std::pair 支持以下比较操作符:==, !=, <, <=, >, >=,它们基于 firstsecond 成员进行逐个比较。

#include <iostream>
#include <utility> // 包含 std::pairint main() {std::pair<int, std::string> p1(1, "apple");std::pair<int, std::string> p2(2, "banana");if (p1 < p2) {std::cout << "p1 is less than p2" << std::endl;} else {std::cout << "p1 is not less than p2" << std::endl;}return 0;
}

用途

  • 返回多个值std::pair 常用于函数返回多个值。例如,std::mapstd::pair 用于存储键值对。
  • 存储关联数据:用于存储两个相关的但不同的数据项,如坐标点(std::pair<int, int>)或学生的信息(std::pair<std::string, double>,其中第一个是名字,第二个是成绩)。

总结

std::pair 是一个方便的工具,用于将两个相关的值组合在一起。它提供了简单的接口来访问和操作这两个值,并支持基本的比较操作。通过使用 std::pair,可以轻松地管理和传递相关的值对。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python基础知识学习总结(一)
  • 设计模式---简单工厂模式
  • Bazaar v1.4.3 任意文件读取漏洞复现(CVE-2024-40348)
  • 【C++ 面试 - 基础题】每日 3 题(十五)
  • PostgreSQL-02-入门篇-查询数据
  • 《全面解析 Nginx:从下载安装到高级应用与问题解决》
  • Linux 操作系统 --- 信号
  • 【项目】基于Vue2+Router+Vant 前端面经项目
  • 你知道Windows下的linux的神器WSL吗?
  • 【VRPCB】Python+Gurobi求解运输问题建模实践三
  • 景联文科技:图像标注的类型有哪些?
  • 【网络安全】SSO登录过程实现账户接管
  • 【网络通信】关于TCP和HTTP
  • 【MybatisPlus】创建Mapper接口继承BaseMapper接口
  • Linux 与 Windows 服务器操作系统 | 全面对比
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • classpath对获取配置文件的影响
  • codis proxy处理流程
  • CSS中外联样式表代表的含义
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JSONP原理
  • Laravel核心解读--Facades
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • react-native 安卓真机环境搭建
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • 翻译:Hystrix - How To Use
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 如何编写一个可升级的智能合约
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • ​数据结构之初始二叉树(3)
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • $NOIp2018$劝退记
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (windows2012共享文件夹和防火墙设置
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (第二周)效能测试
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (一) 初入MySQL 【认识和部署】
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)可以带来幸福的一本书
  • .net core Swagger 过滤部分Api
  • .NET Framework 服务实现监控可观测性最佳实践
  • .net 设置默认首页
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET单元测试使用AutoFixture按需填充的方法总结
  • .net分布式压力测试工具(Beetle.DT)
  • .NET框架设计—常被忽视的C#设计技巧
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)