栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

modern C++集合——tuple

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

modern C++集合——tuple

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

一:特点

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

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

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

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

二:tuple的定义与初始化

tuple t1;
tuple t2(1, 'a', 2.0, "jj");
string str;
tuple 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::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++4新特性:增加元素类型获取元素值

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/784170.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号