C++ tuple(元组) 的实现/原理

本文探讨C++中的tuple特性,通过代码实例分析tuple如何将不同类型的对象组合,并展示了tuple的继承结构,从Tuple至Tuple<>的继承链。" 120939336,11236845,软件测试全解析:分类详解,"['软件测试', '测试方法', '测试阶段']
摘要由CSDN通过智能技术生成

C++最新中引入了 tuple, 可以定义任意多个类型的对象的组合, 关于C++ tuple 的实现,可以参照如下代码实例来理解tuple实现的原理。

#include <iostream>
using namespace std;


template<typename... Values>class Tuple;
template<>class Tuple<> {};
template<typename Head, typename... Tail>
class Tuple<Head, Tail...>
	:private Tuple<Tail...>	// 私有继承自Tuple<Tail...>
{
	using inherited = Tuple<Tail...>; //定义inherited 为 基类类型
public:
	Tuple(){}  
	Tuple(Head v, Tail... vtail) // 将第一个元素 赋值给m_head, 其余传给基类
		:m_head(v), inherited(vtail...)
	{}

	Head head() { return m_head; }  // 返回元组的第一个元素
	inherited& tail() { return *this; } // 返回该元组的基类引用
protected:
	Head m_head;
};


template<typename Head, typename... Tail>
ostream& operator<<(ostream& os, Tuple<Head, Tail...>& tpe) // 当元素个数大于1时调用该方法
{
	os <<  tpe.head() << ",";
	operator<<(os, tpe.tail()); // 将tpe的基类作为输出的对象
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值