如果不在C++中为数组、向量或映射创建临时变量,我如何返回它



在java中,一个数组可以用return new int[] {1,2,3}返回。在C++中,我习惯先创建一个数组(比如temp(,然后在其中存储1,2,3,然后用return temp返回它。我如何在不使用temp的情况下返回{1,2,3}。我可以在没有临时变量的情况下类似地返回向量或映射(而不是数组(来将它们存储在C++中吗?如果是,我该怎么做?

您不能真正返回纯数组。普通数组衰减为指针(指向它们的第一个元素(,您返回的就是这样一个指针。这不会起作用,因为当函数结束时,数组的生存期将结束,指针将立即变为无效。

但是您可以很容易地返回std::arraystd::vector对象,就像want:一样

std::vector<int> foo()
{
return { 1, 2, 3 };
}

是的,您可以编写这样的函数:

std::vector<int> f() 
{
return {1,2,3};
}

其返回CCD_ 7而不创建临时的。

从c++17,你也可以写:

auto f() {
return std::vector {1,2,3};  // int is deduced
}

最新更新