本文用两种方法模拟实现c++中的Tuple。
Tuple可以接收任意数量和类型的元素。
测试代码如下:
#include <iostream>
#include <string>
int main()
{
tuple<int, float, std::string> t(10, 9.17, "April");
std::cout << t.GetHead() << std::endl;
std::cout << t.GetTail().GetHead() << std::endl;
std::cout << t.GetTail().GetTail().GetHead() << std::endl;
}
1.继承方式实现tuple
template<typename... Values> class tuple;
template<> class tuple<> {};
template<typename Head, typename... Tail>
class tuple<Head, Tail...> :private tuple<Tail...>
{
public:
tuple() {}
tuple(Head head, Tail... tail):m_Head(head), tuple<Tail...>(tail...) {}
Head GetHead() { return m_Head; }
tuple<Tail...>& GetTail() { return *this; }
protected:
Head m_Head;
};
测试代码运行结果:

2.组合方式实现tuple
template<typename... Values> class tuple;
template<> class tuple<> {};
template<typename Head, typename... Tail>
class tuple<Head, Tail...>
{
public:
tuple() {}
tuple(Head head, Tail... tail):m_Head(head), m_Tail(tail...) {}
Head GetHead() { return m_Head; }
tuple<Tail...>& GetTail() { return m_Tail; }
protected:
Head m_Head;
tuple<Tail...> m_Tail;
};
测试代码运行结果:

本文介绍了一种在C++中模拟实现Tuple的方法,通过继承和组合两种方式,展示了如何创建可以接收任意数量和类型的元素的Tuple。测试代码演示了如何使用这些自定义的Tuple类。
1429

被折叠的 条评论
为什么被折叠?



