在java中,一个数组可以用return new int[] {1,2,3}
返回。在C++中,我习惯先创建一个数组(比如temp(,然后在其中存储1,2,3
,然后用return temp
返回它。我如何在不使用temp的情况下返回{1,2,3}
。我可以在没有临时变量的情况下类似地返回向量或映射(而不是数组(来将它们存储在C++中吗?如果是,我该怎么做?
您不能真正返回纯数组。普通数组衰减为指针(指向它们的第一个元素(,您返回的就是这样一个指针。这不会起作用,因为当函数结束时,数组的生存期将结束,指针将立即变为无效。
但是您可以很容易地返回std::array
或std::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
}