我想知道如何在 C++0x 的标准库中实现元组。我尝试阅读 libstdc++ 手册中的描述,然后阅读 模板列表,但很难理解它是如何工作的,尤其是在阅读代码时。
有人可以用几句话向我解释元组实现的想法吗?我想知道这一点,因为我考虑在我的代码中使用元组,我想了解它是如何工作的以及它带来了什么类型的开销(仅延长编译时间,在内存上执行许多复制操作,在构造函数中执行许多其他函数, ETC。)。
原文由 Goofy 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想知道如何在 C++0x 的标准库中实现元组。我尝试阅读 libstdc++ 手册中的描述,然后阅读 模板列表,但很难理解它是如何工作的,尤其是在阅读代码时。
有人可以用几句话向我解释元组实现的想法吗?我想知道这一点,因为我考虑在我的代码中使用元组,我想了解它是如何工作的以及它带来了什么类型的开销(仅延长编译时间,在内存上执行许多复制操作,在构造函数中执行许多其他函数, ETC。)。
原文由 Goofy 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
实现元组的一种方法是使用多重继承。元组元素由叶类持有,元组类本身继承自多个叶。在伪代码中:
每个叶子都有一个索引,因此即使它们包含的类型相同,每个基类也变得唯一,因此我们可以使用简单的 static_cast 访问第 n 个 元素:
我在这里写了关于这个“平面”元组实现的详细解释: C++11 元组实现细节(第 1 部分)