首页 > 后端开发 > C++ > 正文

c++中的std::pair怎么创建和使用_c++ std::pair创建使用方法

冰火之心
发布: 2025-10-11 21:54:05
原创
643人浏览过
std::pair 是 C++ 中用于组合两个值的模板类,支持多种创建方式(构造函数、make_pair、花括号初始化),通过 first 和 second 访问成员,常用于返回多值、插入 map 及结构化绑定,推荐在语义明确时使用 struct 提升可读性。

c++中的std::pair怎么创建和使用_c++ std::pair创建使用方法

在C++中,std::pair 是一个模板类,定义在 utility 头文件中,用于将两个值组合成一个单元。这两个值可以是相同或不同的类型。它常用于函数返回多个值、插入键值对到容器(如 map)等场景。

创建 std::pair 的方法

有多种方式可以创建 std::pair

  • 使用构造函数
    std::pair<int, std::string> p(1, "hello");
  • 使用 make_pair 函数(推荐,可自动推导类型):
    auto p = std::make_pair(1, "hello");
    编译器会自动推断出类型为 std::pair<int, const char*>
  • 使用花括号初始化(C++11 起)
    std::pair p{1, "hello"}; // C++17 起支持类模板参数推导
    或显式指定:std::pair<int, std::string> p{"hi", 2};

访问 std::pair 的成员

std::pair 有两个公开成员:firstsecond,分别表示第一个和第二个元素。

auto p = std::make_pair(10, "world");
std::cout << p.first << ", " << p.second << std::endl; // 输出:10, world

可以直接修改成员值:

阿里妈妈·创意中心
阿里妈妈·创意中心

阿里妈妈营销创意中心

阿里妈妈·创意中心 0
查看详情 阿里妈妈·创意中心

立即学习C++免费学习笔记(深入)”;

p.first = 20;
p.second = "changed";

std::pair 的常见用途

  • 作为函数返回值
    当需要从函数返回两个相关值时,非常方便。
    std::pair<bool, int> findValue(const std::vector<int>& vec, int target) {
      for (size_t i = 0; i < vec.size(); ++i) {
        if (vec[i] == target) {
          return {true, static_cast<int>(i)};
        }
      }
      return {false, -1};
    }
  • 插入 map 元素
    std::map<int, std::string> m;
    m.insert(std::make_pair(1, "apple"));
    m.insert({2, "banana"}); // 更简洁
  • 结构化绑定(C++17)
    可以直接解包 pair 的值:
    auto [success, index] = findValue(data, 5);
    if (success) { std::cout << "Found at " << index; }

基本上就这些。std::pair 使用简单,适合处理成对数据,但若字段有明确语义,建议用 struct 提高可读性。不复杂但容易忽略细节,比如类型自动推导和 const 限制。

以上就是c++++中的std::pair怎么创建和使用_c++ std::pair创建使用方法的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号