新闻中心

C++ pair和make_pair用法_C++ STL成对数据存储操作步骤

2025-11-27
浏览次数:
返回列表
c++kquote>pair是C++ STL中存储两个不同数据的容器,常用于键值对等场景;make_pair可自动推导类型,简化创建过程;pair定义在utility头文件中,通过first和second访问元素;支持字典序比较,广泛应用于map、unordered_map及vector排序中,提升代码简洁性与效率。

c++ pair和make_pair用法_c++ stl成对数据存储操作步骤

在C++ STL中,pair 是一种能够存储两个不同类型数据的容器,常用于需要成对保存数据的场景,比如映射关系、函数返回多个值、STL容器中的键值对等。而 make_pair 是一个便捷函数,用于快速创建 pair 对象,避免手动指定类型。

pair 的基本用法

pair 定义在 utility 头文件中(通常包含 或直接使用 ),可以保存两个元素,分别称为 firstsecond

定义方式如下:

  • std::pair p1 = {1, "Alice"};
  • std::pair p2(3.14, true);

访问元素使用点操作符:

  • p1.first // 获取第一个元素
  • p1.second // 获取第二个元素

make_pair 的作用与优势

make_pair 可以自动推导类型,简化 pair 的创建过程,无需显式写出模板参数。

  • auto p = make_pair(10, "Bob"); —— 等价于 pair
  • auto p3 = make_pair("key", 100);

这在函数传参或插入容器时特别方便,比如:

Motiff妙多 Motiff妙多

Motiff妙多是一款AI驱动的界面设计工具,定位为“AI时代设计工具”

Motiff妙多 334 查看详情 Motiff妙多 std::vector<:pair int>> vec;
vec.push_back(make_pair(1, 2));

pair 在 STL 容器中的典型应用

pair 最常见的用途之一是配合 mapunordered_map 使用,这些容器的每个元素本质上就是一个 pair。

  • std::map m;
    m[1] = "John";
    // 或插入:m.insert(make_pair(1, "John"));

在遍历时,迭代器指向的是 pair 类型:

for (const auto& kv : m) {
  std::cout }

pair 的比较与排序

pair 支持默认的字典序比较,先比较 first,再比较 second,适用于排序和 set 中的自动排序。

  • (1, 3) —— 成立,因为 1
  • (2, 1) —— 成立,first 相等时比较 second

可直接用于 vector 排序:

std::vector<:pair int>> points = {{2, 3}, {1, 4}, {2, 1}};
std::sort(points.begin(), points.end());

基本上就这些。合理使用 pair 和 make_pair 能让代码更简洁清晰,尤其在处理键值对、坐标、临时数据组合时非常高效。不复杂但容易忽略细节,比如类型匹配和自动推导规则。

以上就是C++ pair和make_pair用法_C++ STL成对数据存储操作步骤的详细内容,更多请关注其它相关文章!


# 配置文件  # seo全套免费培训运营  # 教育行业网站建设规定  # 裙子营销推广方案  # 大剧院网站建设方案  # 广告营销代理推广方案  # SEO管培生  # 寿光怎么优化网站建设  # 苏州网站建设seo  # 海尔网络营销推广体系  # 东莞营销型网站建设工期  # 是一个  # 的是  # c++ pair  # 解决方法  # 怎么做  # 重写  # 数据存储  # 操作步骤  # 有什么  # 键值  # red  # 键值对  # c++  # ai 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 单射、满射与双射的关系 一文理清所有逻辑  CSS子选择器:如何区分并样式化嵌套列表的子层级  支付宝解绑银行卡步骤_支付宝如何解除绑定银行卡  Win10文件资源管理器“此电脑”分组怎么关 Win10恢复经典视图【技巧】  汽车之家官方网站官网入口_汽车之家网页版直接进入  将JSON对象数组转置为键值对列表的实用指南  LINUX怎么设置定时任务_LINUX crontab配置教程  J*a 递归快速排序中静态变量的状态管理与陷阱  谷歌浏览器怎么给标签页静音_Chrome标签静音快捷操作  J*aScript 字符串标签转换:使用正则表达式高效替换  深入理解与实现最大堆的Heapify过程:常见错误与修正  如何设置Windows Defender的定时扫描_计划任务实现自动杀毒【安全】  Go语言中Map值调用指针接收器方法的限制与应对  QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台  打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门  c++如何使用chrono库处理时间_c++标准库时间与日期操作  黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】  谷歌浏览器浏览体验优化_谷歌浏览器新版直连永久可用提示  Golang指针如何与map组合使用_Golang map指针组合实践  TypeScript/J*aScript:高效查找数组中首个唯一ID对象  C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责  DLsite中文平台入口 DLsite官网内容在线查看  Word2013如何插入视频和音频媒体_Word2013媒体插入的多媒体支持  解决J*aScript中重复选择项的确认对话框显示问题  CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题  sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统  微博网页版怎么开启两步验证_微博网页版账号安全两步验证设置方法  深入理解J*a链表中的IPosition接口与使用  12306选座系统怎么选连座_12306选座多人连坐操作方法  京东京造J1和网易云音乐氧气真无线有什么不同_国产电商蓝牙耳机音质对比  NetBeans Ant项目:自动化将资源文件复制到dist目录的教程  Pandas DataFrame 多条件优先级排序与排名  抖音极速版最新版本 抖音极速版官方下载地址  QQ邮箱登录平台入口 QQ邮箱网页版邮箱官方入口  夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案  Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突  Node.js 中使用 node-cron 实现定时 API 数据抓取与处理  探索高级语言到C/C++的转译路径:以Go为例及内存管理策略  PostgreSQL海量数据高效导入策略:Python与Django实践指南  Promise错误处理:在catch后终止链式then执行的策略  Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】  谷歌学术网站直达地址 谷歌学术搜索网页版一键进入  汽水音乐车机版8.9下载 汽水音乐车机版8.9版本安装入口  Golang如何使用context实现超时取消_Golang context超时取消模式实践  c++中的std::basic_string的SSO优化_c++短字符串优化深度解析  妖精动漫免费平台 妖精动漫官网资源观看网址  服务端验证_j*ascript输入检查  最新韩小圈网页版登录入口_官网在线观看官方链接  Golang如何优雅处理error_Golang error处理最佳实践总结  PDF文件体积过大处理_PDF压缩技巧详解 

搜索