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

发布于:2024-08-16 ⋅ 阅读:(181) ⋅ 点赞:(0)

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


网站公告

今日签到

点亮在社区的每一天
去签到