C++学习 二十、STL(4)pair类型, tuple类型

C++学习 二十、STL(4)pair类型, tuple类型

前言

本篇继续学习C++,STL的pair和tuple类。

pair

pair类型在utility头文件中,用于把两个数据组成一对,使用pair就能让函数间接返回两个值。C++中的pair类似于python中的[a, b]

可以通过构造函数或者utility头文件中的make_pair函数创建pair对象,可以直接访问pair对象的first, second成员,也可以使用>,<,=比较同类型的pair对象。(首先比较first成员,如果相等再比较second成员)

可以使用std::tie()函数解包pair对象。

示例:

#include <cstdio>
#include <iostream>
#include <utility>
#include <tuple>

using namespace std;

pair<int, double> func(int a, int b){
    return pair<int, double>(a, b);
}

int main(){
    pair<int, double> p1(2, 3.3);
    cout << p1.first <<" " << p1.second << endl; // 2 3.3
    pair<int, double> p2 = make_pair(3, 2.2);
    cout << (p1 < p2) << endl; // 1

    int a, b;
    tie(a, b) = func(4, 5);
    cout << a <<" " << b <<endl; // 4 5

    return 1;
}
}

另外,pair中的数据类型也可以是指针,引用。

tuple

C++11引入了tuple类型将多个数据组成一组,可以说pairtuple的特例。

tuple中的元素类型也能是指针和引用,tuple头文件中定义了非成员函数make_tuple,也重载了>, <, ==, =等运算符。

因为不同的tuple类实例可以包含不同数量的元素,因此没有pair类似的first, second成员。访问tuple元素必须使用std::get函数,其用法是std::get<index>(tuple object),提取元素位置是在编译时确定的(类似数组长度),因此索引index必须是一个常量表达式,否则将报error: the value of 'i' is not usable in a constant expression

也可以使用std::tie()解包tuple对象。

示例:

    tuple<int, double, char> t1(1, 2.2, 'c'); 
    tuple<int, double, char> t2 = make_tuple(3, 4.4, 'f');
    std::cout << (t2 > t1) <<endl; // 1
    std::cout << std::get<0>(t2) <<endl; // 3
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值