gpt4 book ai didi

c++ - 是否可以设置 std::tr1::tuple 的默认值?

转载 作者:行者123 更新时间:2023-11-30 01:24:50 24 4
gpt4 key购买 nike

(我使用的是 Visual C+++ 2010)假设我定义了这样一个元组:

typedef std::tr1::tuple<
int //i want to set its default value to 9
, double //i want to set its default value to 3.3
, int //i want to set its default value to 2
, double //i want to set its default value to -7.2
> Mytuple;

我可以在结构中做到这一点。但我想知道是否可以在 std::tr1::tuple 中做到这一点。
此外,我想知道什么时候应该使用 std::tr1:tuplestruct?

谁能帮帮我?

最佳答案

A tuple不是结构的神奇替代品。他们的目的非常不同。结构首先是一种语言结构。 tuple是一个结构。

结构具有默认值,因为该语言规定您可以编写构造函数来为它们提供默认值。然后该语言负责调用该构造函数来初始化该结构。 tuple ,作为一个结构,没有这样的能力,比你能提供的还要多 std::vector<T>默认 T它将始终自动使用。您可以为每个成员提供初始值,但不能为其提供默认值

如果你仔细想想,你就不会想要了。想象一下,如果有人可以说每个 tuple<int, float> 总是用 3 和 54.221 创建。即使某些其他代码创建它时对这条规则一无所知,也必须遵循它(就像在使用该类型的任何地方都使用该类型的构造函数一样)。记住:每个 tuple<int, float>是同一类型。

真的,一个tuple是无法对结构执行反射并对其成员进行编译时迭代的替代方法。它们存在的另一个主要原因是能够拥有编译时动态结构(即能够根据编译时参数创建类型聚合,而不是直接写入文件的静态列表)。

所以除非你需要使用std::tie (为了有效地返回多个值)、成员迭代(即:为对象的每个成员调用一些模板函数)或一些类似的专用代码,您应该使用结构。

关于c++ - 是否可以设置 std::tr1::tuple 的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13301863/

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