天天看点

C++11 tuple多元组

我说的元素,成员等用词可能不太标准,理解什么意思就好

pair众所周知,二元组

用first和second来访问两个元素

用make_pair()来构造

但如果需要为一个对象存储更多的元素呢?

我们会选择结构体

但是c++11还提供了另外一种STL叫tuple

它与pair相比,不局限于存储两个可访问元素

而是很多个,比如

tuple<short, int, long long, float, double, char> tu;      
#include <bits/stdc++.h>

using namespace std;
tuple<int, int, int> t; //定义一个tuple
template<class T> int test(T t) {
  return tuple_size<T>::value;
}
//这个函数用来询问这个tuple的大小,就是其中有几个成员,比如上面的t就有三个
//除了写一个模板类函数我实在找不到别的办法调用这个tuple_size

int main(int argc, char const *argv[]) {
  t = make_tuple(1, 2, 3); //给一个tuple赋初始值
  cout << get<0>(t) << endl; //访问第几个成员<>中就写几,注意从0开始
  cout << test(t) << endl; //输出tuple的size
}