C++STL的pair类模板

本文深入解析了C++中pair类模板的定义与使用,包括其构造函数、成员变量及make_pair函数模板的实现细节。

pair也是一个类模板,需要先实例化再定义对象

定义如下:

template <class_Tl, class_T2>
struct pair
{
    _T1 first;
    _T2 second;
    pair(): first(), second() {}
    pair(const _T1 &__a, const _T2 &__b): first(__a), second(__b) {}
    template <class_U1, class_U2>
    pair(const pair <_U1, _U2> &__p): first(__p.first), second(__p.second) {}
};

除此之外还有一个函数模板 maki_pair用来生成一个pair对象

template <class T1, class T2>
pair<T1, T2 > make_pair(T1 x, T2 y)
{
    return ( pair<T1, T2> (x, y) );
}
### C++ STL 中 `pair` 的用法 在 C++ 标准模板库(STL)中,`std::pair` 是一种用于存储两个不同类型的数据的容器。它通常被用来表示键值对,在关联式容器如 `map` 和 `multimap` 中非常有用。 #### 创建和初始化 `pair` 可以使用多种方式创建并初始化一对: ```cpp #include <utility> // std::pair, std::make_pair using namespace std; // 使用默认构造函数 pair<int, string> p1; p1.first = 42; p1.second = "hello"; // 构造时赋初值 pair<double, char> p2(3.14, 'A'); // 利用 make_pair 函数简化语法 auto p3 = make_pair('B', 7); ``` #### 访问成员变量 每一对有两个公共成员变量:`.first` 和 `.second`,分别代表第一个和第二个元素。 ```cpp cout << "First element of p2 is: " << p2.first << endl; // 输出 3.14 cout << "Second element of p2 is: " << p2.second << endl; // 输出 A ``` #### 比较操作符重载 为了方便比较两对之间的关系,标准库已经为它们定义了一系列的关系运算符 (`==`, `<`, etc.)。这些比较基于字典序原则执行。 ```cpp if (p2 < p3) { cout << "(d,c) pair less than (c,i) pair." << endl; } ``` #### 应用场景实例 当需要返回多个值或传递一组参数给另一个函数时,`pair` 就显得特别有用了。下面是一个简单的例子展示如何利用 `pair` 来实现这一点: ```cpp pair<bool, int> divide(int a, int b){ if(b != 0) return {true, a / b}; else return {false, 0}; } int main(){ auto result = divide(10, 2); if(result.first) cout << "Result was successful: " << result.second << endl; else cerr << "Division by zero error!" << endl; return 0; } ``` 通过上述代码片段可以看出,`pair` 提供了一种简洁而有效的方式来处理成双出现的数据项[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值