C++-tuple元组

1tuple元组

  • 是什么?
    tuple是一个固定大小的不同类型值的集合。是一个可以容纳不同类型元素的容器 。
    我们也可以把他当做一个通用的结构体来用,不需要创建结构体又获取结构体的特征, 在某些情况下可以取代结构体使程序更简洁,直观。
    std::tuple理论上可以有无数个任意类型的成员变量,而std::pair只能是2个成员因此在需要保存3个及以上的数据时就需要使用tuple元组了。
  • 作用?
    让函数返回多个值。
    在没有tuple之前,如果函数需要返回多个值,则必须定义一个结构体,有了C++11,可以基于tuple直接做了。

2 功能介绍

//tuple创建
std::tuple<T1, T2, TN> t1;    //创建一个空的tuple对象(使用默认构造),它对应的元素分别是T1和T2...Tn类型,采用值初始化。
std::tuple<T1, T2, TN> t2(v1, v2, ... TN);    //创建一个tuple对象,它的两个元素分别是T1和T2 ...Tn类型; 
std::tuple<T1&> t3(ref&); // tuple的元素类型可以是一个引用
std::make_tuple(v1, v2); // 像pair一样也可以通过make_tuple进行创建一个tuple对象

//tuple获取
通过tuple的成员get<n>(obj)进行获取(n是指获取在tuple中的第几个元素,请看后面具体实例)。

//tuple批量赋值---std::tie
std::tie会将变量的引用整合成一个tuple,从而实现批量赋值。
int i; double d; string s;
tie(i, d, s) = t3;
cout << i << " " << d << " " << s << endl;
//会输出4 2 3


3 实例

//C++11中的tuple应用:让函数返回多个值
//在没有tuple之前,如果函数需要返回多个值,则必须定义一个结构体,有了C++11,可以基于tuple直接做了

// 编译:g++ -std=c++11 -g -o x x.cpp
#include <tuple> // tuple头文件
#include <stdio.h>
#include <string>
using namespace std;

// 函数foo返回tuple类型
tuple<int, string> foo();

int main()
{
	// 两个不同类型的返回值a和b
	int a;
	string b;

	// 注意tie的应用
	tie(a, b) = foo();
	printf("%d => %s\n", a, b.c_str());

	// 注意tuple是一个可以容纳不同类型元素的容器
	tuple<int, string, char, float> x = make_tuple(2020, "tupule", 'x', 5.30);
	printf("%d, %s, %c, %.2f\n", get<0>(x), get<1>(x).c_str(), get<2>(x), get<3>(x));

	return 0;
}

tuple<int, string> foo()
{
	// 用make_tuple来构造一个tuple
	return make_tuple(2019, "tuple");
}
2019 => tuple
2020, tupule, x, 5.30
请按任意键继续. . .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值