modern C++集合——tuple

本文介绍了C++中的Tuple特性,包括其定义、初始化方式、基本操作等,并提供了实例演示如何使用Tuple进行数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tuple:是一个固定大小的不同类型值的集合,是泛化的pair,类似于结构体。pair只能保存两个元素,而tuple理论上可以保存任意类型不同的元素。tuple从c++11开始引入。

一:特点

1.tuple不支持迭代,只能通过元素索引或者std::tie拆包后获取元素的值;且给定索引必须在编译期就给定,不能在运行期给,否则引发编译错误,如下

tuple<int, char, double, string> t(1, 'a', 2.0, "jj");
for (int i = 0; i < 3; i++)
{
    cout << get<i>(t) << endl; //将引发编译错误
}

cout << get<0>(t) << endl;//正确的方式

2.tuple的元素类型可以是引用类型。

二:tuple的定义与初始化

tuple<int, char> t1;
tuple<int, char, double, string> t2(1, 'a', 2.0, "jj");
string str;
tuple<string&, int> t3(str, 12);
auto t4 = make_tuple(1, 'a', 2.0, "jj");

get<0>(t3) = "ssss";
cout << str << endl;//str输出为"ssss"

三:基本操作

1.获取tuple元素个数

int cnt = tuple_size<decltype(t2)>::value;//cnt为4

2.获取tuple元素值

//通过get获取
cout<< get<0>(t2) << endl;//输出1

//tie解包
int n;
char c;
double d;
string s;
tie(n, c, d, s) = t2;
cout << n <<";" << c << ";" << d << ";" << s << endl;//输出1;a;2;jj

3.获取tuple元素类型

tuple_element<0, decltype(t2)>::type;

4.ignore占位

tie(n, ignore, ignore, s) = t2;
cout << n <<";" << s << endl;//输出1;jj

5.c++14新特性:增加元素类型获取元素值

cout << get<double>(t2) << endl;//输出2

//如果多个值类型一致则不适用
auto t5 = make_tuple(1, 2, "aa");
cout << get<int>(t5) << endl;//引发编译期错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值