C++ 中声明一个变量并在同一行返回它

3

我有一段代码,它可以

if(x>5){
vector<int> a;
return a;
}

但我很好奇是否有一种方法可以像这样在一行中返回:

if(x>5){
return vector<int> a;
}

9
返回一个空的整数向量。 - songyuanyao
2
如果您的函数的返回类型是 vector<int>,那么您甚至可以只写 return {}; - David Grayson
啊,经典的 XY 问题。你实际上并不想声明一个变量,蚂蚱。 - Wyck
3个回答

2
这将按预期工作:
return vector<int>();

这将创建一个对象并同时返回它。由于对象没有使用任何名称创建,因此被称为“匿名对象”。
因此,您可以像这样修改代码,而不给变量分配名称:
if(x>5){
return vector<int>();
}

非常感谢!使用匿名对象会导致问题吗?或者通常被认为是安全的做法? - zeltath
1
是的,只要它遵循普通对象的属性,就是安全的。 - Abhishek Dutt
1
@zeltath 如果这个答案对你有帮助,请将其标记为已接受,以便其他有同样问题的人也能受益。 - Abhishek Dutt

1
问题在于vector<int> a只是创建了一个对象但没有返回任何东西,而vector<int>()则返回一个“匿名”的新对象。

尝试使用:

return vector<int>();

你把这个发表为答案,但是听起来好像你并没有真正提供一个答案。你是不是想发表一个评论? - David Grayson

1

您可以做:

return {};

这将创建一个匿名对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接