gpt4 book ai didi

c++ - 我正在使用可变参数模板在 C++11 中创建一个元组类。我如何使用它的实例变量?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:28:26 34 4
gpt4 key购买 nike

假设我这样定义一个元组:

template<typename... Args>
class Tuple
{
Method () {...};
};

考虑到 Tuple 可以有未定义数量的实例变量,我该如何定义和访问它的实例变量?

最佳答案

有几种方法。最简单的方法是像 LISP 那样使用结构递归:元组要么是

  • 一个空元组,或者
  • 一对(head, tail)其中 head是元组的第一个元素,tail是一个包含其余元素的元组。

在 C++ 中,这看起来像下面这样:

template <typename... Elems>
struct tuple; // undefined

template <>
struct tuple<> { }; // empty tuple

template <typename Head, typename... Tail>
struct tuple<Head, Tail...> {
Head first_elem;
tuple<Tail...> rest;
};

然后你需要一个get<n>通过索引实际访问元素的函数模板;如果您了解元组本身是如何递归定义的,那么它应该很容易实现。

正如我所说,还有其他更棘手的实现方法 - 由于各种原因,上述方法并不是大多数现实世界中的方法 std::tuple实现做到这一点。

关于c++ - 我正在使用可变参数模板在 C++11 中创建一个元组类。我如何使用它的实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8190611/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com