gpt4 book ai didi

c++ - 对于下面的代码,我将 decltype(s1.size()) 更改为 int,并且代码运行良好。在这种情况下 decltype(s1.size()) 是多余的吗?

转载 作者:行者123 更新时间:2023-11-28 02:12:36 25 4
gpt4 key购买 nike

我是 C++ 新手。我正在尝试学习 decltype 的概念。我在网上看到这段代码。我将 decltype(s1.size()) 更改为 int,代码工作正常。 decltype(s1.size()) 在这种情况下是多余的还是我遗漏了什么?

int main(){
string s1 = "hello world";
decltype(s1.size()) a = 0;
while ( a < s1.size()){
s1[a++] = 'x';
cout << s1 << endl;
}
}

为什么这里需要decltype,int也一样?

最佳答案

Is decltype(s1.size()) redundant in this context?

我不会使用“冗余”。对我来说,冗余意味着多余,即指定已经指定或不需要指定的内容。

也许您正在考虑“不必要的复杂”。

无论如何,当您不必记住函数的返回类型并且想要创建该类型的多个实例时,使用 decltype 会很有帮助。还要记住,您可以使用 auto 从用于初始化对象的表达式中推断出对象的类型。

你可以使用:

// Make the type of a to be deduced from the return type of s1.size()
auto a = s1.size();

// Define a type based on the return type of s1.size()
using size_type = decltype(s1.size());

// Use the type.
size_type a = s1.size();
size_type b = 0;
for ( ; b < a; ++b )
{
...
}

// Make the type of a to be deduced from the return type of s1.size()
auto a = s1.size();

// Make the type of b to be the same as the type of a.
decltype(a) b = 0;
for ( ; b < a; ++b )
{
...
}

有关该主题的更多信息:https://stackoverflow.com/search?q=[cpp]+decltype+is%3Aq .

关于c++ - 对于下面的代码,我将 decltype(s1.size()) 更改为 int,并且代码运行良好。在这种情况下 decltype(s1.size()) 是多余的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35145469/

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