【1】Tuple库
【1.1】Tuple介绍
tuple是C++11新标准里的类型。它是一个类似pair类型的模板。pair类型是每个成员变量各自可以是任意类型,但是只能有俩个成员,而tuple与pair不同的是它可以有任意数量的成员。但是每个确定的tuple类型的成员数目是固定的。
【1.2】Tuple特点
- tuple是模板,tuple所有成员都是public的
- 使用tuple的相关操作,需要包含头文件。(#include<tuple>)
- 希望将数据组合成单一对象时,使用tuple非常有用。(快而随意的数据结构)
- 一个tuple可以有任意数量的成员,tuple的成员类型也不相同。
- 一个确定的tuple类型的成员数目是固定的,意味着不能有添加和删除能够改变成员数目的操作。
- 条件:只有2个tuple具有相同数量的成员,才可以比较。比较时,每对成员必须是合法的,简单来说就是2个tuple成员类型应该相同。
- 高级用法:从函数返回多个值。由于tuple定义了<和==运算符,因此还可以将tuple序列传递给算法,并且可以在无序容器中将tuple作为关键字类型。
【1.3】定义和初始化
初始化
tuple<int,float,size_t> threet;
tuple<string,vector<double>,int,list<int>> someVal("tuple",{2.14,3.15},100,{1,2,3})
容器大小
auto sz = tuple_size<decltype(itme)>::value;//sz为3
【1.4】实例代码
// Type_tuple.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "pch.h"
#include <iostream>
#include<tuple>
#include<vector>
using namespace std;
tuple<int, vector<int>, char> backnumber1();
pair<int, char> backnumber2();
void main1()
{
vector<int> my_vector;
my_vector.push_back(1);
my_vector.push_back(12);
my_vector.push_back(21);
char str= 'd';
tuple<int, vector<int>, char> mytuple{2,my_vector ,str };
//访问元素
auto number = get<1>(mytuple);//访问tuple中的第一个元素
for (size_t i = 0; i < number.size(); i++)
{
cout << number[i] << endl;
}
//decltype确定一个对象的类型别名
typedef decltype(mytuple) trans;
auto sz = tuple_size<trans> ::value;
cout << sz << endl;
cin.get();
}