使用 std::tuple
和仅数据 struct
之间有什么区别吗?
typedef std::tuple<int, double, bool> foo_t;
struct bar_t {
int id;
double value;
bool dirty;
}
从网上查到的,我发现有两个主要区别: struct
可读性更强,而 tuple
有很多通用函数可以使用。是否应该有任何显着的性能差异?此外,数据布局是否相互兼容(可互换)?
原文由 Alex Koay 发布,翻译遵循 CC BY-SA 4.0 许可协议
从其他答案来看,性能考虑充其量是最小的。
所以它真的应该归结为实用性、可读性和可维护性。
struct
通常更好,因为它创建的类型更易于阅读和理解。有时,可能需要
std::tuple
(甚至std::pair
)以高度通用的方式处理代码。例如,如果没有std::tuple
类的东西,一些与可变参数包相关的操作将是不可能的。std::tie
是一个很好的例子,说明std::tuple
可以改进代码(在 C++20 之前)。但是在任何你 可以 使用
struct
的地方,你可能 应该 使用struct
。它将赋予您类型的元素语义含义。这对于理解和使用类型非常宝贵。反过来,这可以帮助避免愚蠢的错误: