当前位置:   article > 正文

c++中的tuple(元组)_c++ tuple

c++ tuple

tuple是c++II里出现的类型,和pair类型类似,但pair类型是限定两个任意类型的变量,tuple更加强大,它可以有任意数量的成员。但是每个确定了的tuple类型的成员数目是确定不变的。

1、tuple的用处

当需要将多种不同类型的数据凑在一起的时候,我们可以有两个选择,那就是结构体和tuple,而tuple是更加方便的一个选择。

下面展示tuple的简单示例:

  1. #include<tuple>
  2. #include<vector>
  3. int main()
  4. {
  5. std::tuple<string,int,std::vector<float>> tpl("sun", 1, {1.1, 2.2, 3.3} );
  6. //获得元组的个数
  7. //decltype(tpl)是获得tpl的类型,操作简单
  8. int size = std::tuple_size<decltype(tpl)>::value;
  9. std::cout<<"元组里的个数是: "<<size<<std::endl;
  10. return 0;
  11. }

2、了解tuple

a. tuple是一个模板,tuple里的所有成员都是public的

b. 使用tuple的相关操作需要包含相应头文件,上面代码中的#include<tuple>

c. 可以将不同类型的多种数据组合成tuple类型的单一对象,快而随意

d. tuple的成员数量可以是任意的,这些成员的类型也可以各不相同

e. 一个声明好了的tuple类型的对象的成员数目是固定的了,知道tuple是模板后可以理解这一点,这也表明了声明好的tuple对象  没有增删操作

 

3、tuple的使用

定义和初始化

如上示例所示,定义tuple时,因为它是一个模板,和其他模板一样,也需要在尖括号里面说明它的成员的类型,而且是指出所有成员的类型。

  1. #include<tuple>
  2. int main()
  3. {
  4. std::tuple<string,int,double> tpl2; //使用tuple默认构造函数
  5. std::tuple<int,std::vector<int>> tpl3(3, {4, 5, 6});//必须使用直接初始化,不能用“=”初始化,
  6. //因为tuple是explicit的
  7. auto tpl4 = make_tuple(7, 8, 9); //可以用make_tuple()函数生成tuple对象,
  8. //此处自动推断出tpl4的类型为tuple<int,int,int>
  9. return 0;
  10. }

访问

a. 用get标准库模板进行访问其元素内容

b. 用tuple_size访问其元素个数

c. 用tuple_element访问其元素类型

  1. #include<tuple>
  2. int main()
  3. {
  4. auto tpl5 = make_tuple(1, 2, 3, 4.4);
  5. //a
  6. auto number = get<3>(tpl5); //返回tuple对象tpl5的第四个成员(和数组一样从0开始计)
  7. //b
  8. auto size = tuple_size<decltype(tpl5)>a::value; //size=4
  9. //c
  10. tuple_element<3, decltype(tpl5)>::type tupleType; //typleType的类型为float
  11. return 0;
  12. }

tuple对象之间的比较

有<和==关系运算符,比较两个tuple对象是有条件的,就是两个对象的成员数量要相等,在这样的情况下对应位置的成员类型相比较。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/305864
推荐阅读
相关标签
  

闽ICP备14008679号