C++ pair怎么用 C++成对数据组合使用方法演示【基础】
发布时间 - 2026-02-02 00:00:00 点击率:次std::pair 是 C++ 中用于打包两个值的轻量级模板结构体,适用于需临时配对的场景,如 map 迭代、多返回值、sort 比较等;通过 first/second 成员直接访问,常用 make_pair 构造。
pair 是什么,什么时候该用它
std::pair 是 C++ 标准库中一个轻量级的模板结构体,用来把两个不同类型(或相同类型)的值打包成一个单元。它不是容器,不支持增删元素,只管存两个东西:first 和 second。常见于需要“临时配对”的场景,比如:
• std::map 的迭代器解引用返回的就是 pair
• 函数需要同时返回两个值(比如搜索函数返回是否找到 + 索引)
• 作为 std::sort 自定义比较的中间结果
• 和 std::make_pair 配合快速构造,避免写冗长的模板参数
怎么创建和访问 pair
最常用的是 std::make_pair,它能自动推导类型,省得手写 std::pair 这种长名:
• auto p1 = std::make_pair(42, "hello"); → 类型是 std::pair
• std::pair<:string double> p2{"pi", 3.14159}; → 直接初始化,C++11 起支持
访问必须用点号:p1.first 和 p1.second,不能用下标或迭代器
注意:first 和 second 是 public 成员,可直接读写,但不能通过 std::get(p) 访问(那是 std::tuple 的用法)
pair 在 map 和算法里怎么配合用
std:: 内部存储的就是 
std::pair,所以遍历时直接解包:
• for (const auto& kv : my_map) { std::cout "
• 想按 value 排序?得先把 map 搬进 vector:std::vector<:pair std::string>> v(my_map.begin(), my_map.end());,再用 std::sort(v.begin(), v.end(), [](const auto& a, const auto& b) { return a.second
注意:map 的 key 是 const 的,所以 kv.first 只能读,不能赋值;而 kv.second 可写(如果 value 类型允许)
容易踩的坑:类型匹配、移动语义和比较规则
std::pair 的比较操作符(==、)默认按字典序:先比 first,相等再比 second。但前提是两个成员都支持对应操作:
• std::pair<:string std::vector>> 支持 ==,因为 std::string 和 std::vector 都重载了 ==
• std::pair 不支持 ==(指针比较的是地址,不是所指内容)
• 移动构造/赋值会触发成员的移动(如果它们支持),但如果你存的是自定义类,要确保它有移动语义或至少有拷贝构造
• 别把 std::pair 当 std::tuple 用——后者支持 std::get、结构化绑定更灵活,而 pair 就是专为“二元组”设计的简洁替代
# ai
# c++
# 标准库
# sort
# for
# const
# auto
# 结构体
# public
# map
# 算法
# 的是
# 自定义
# 不支持
# 迭代
# 如果你
# 那是
# 什么时候
# 适用于
# 再用
# 不能用
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251811 】
【
AI营销90571 】
相关推荐:
Laravel API资源类怎么用_Laravel API Resource数据转换
历史网站制作软件,华为如何找回被删除的网站?
js代码实现下拉菜单【推荐】
如何在景安云服务器上绑定域名并配置虚拟主机?
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
Mybatis 中的insertOrUpdate操作
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
Python面向对象测试方法_mock解析【教程】
Linux系统运维自动化项目教程_Ansible批量管理实战
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
Linux系统命令中screen命令详解
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
如何构建满足综合性能需求的优质建站方案?
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
JS去除重复并统计数量的实现方法
Android 常见的图片加载框架详细介绍
如何用美橙互联一键搭建多站合一网站?
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
Linux系统命令中tree命令详解
Laravel中的Facade(门面)到底是什么原理
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
在线制作视频网站免费,都有哪些好的动漫网站?
深圳网站制作平台,深圳市做网站好的公司有哪些?
如何为不同团队 ID 动态生成多个非值班状态按钮
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
Python图片处理进阶教程_Pillow滤镜与图像增强
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
如何在IIS服务器上快速部署高效网站?
Laravel PHP版本要求一览_Laravel各版本环境要求对照
详解阿里云nginx服务器多站点的配置
Laravel如何处理文件下载请求?(Response示例)
七夕网站制作视频,七夕大促活动怎么报名?
再谈Python中的字符串与字符编码(推荐)
java获取注册ip实例
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
Android利用动画实现背景逐渐变暗
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
大型企业网站制作流程,做网站需要注册公司吗?
JavaScript数据类型有哪些_如何准确判断一个变量的类型
*服务器网站为何频现安全漏洞?
PythonWeb开发入门教程_Flask快速构建Web应用
SQL查询语句优化的实用方法总结
焦点电影公司作品,电影焦点结局是什么?
如何快速搭建高效WAP手机网站?
HTML 中动态设置元素 name 属性的正确语法详解

