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::pair

int 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_pair

int 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::pair

int 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,可以轻松地管理和传递相关的值对。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值