如何在c++中优雅地返回特定的向量元素

c2e8gylq  于 2023-02-01  发布在  其他
关注(0)|答案(2)|浏览(140)

我正在处理一个必须返回类型向量的问题。我知道向量的大小正好是2。有没有一种方法可以以向量的形式返回值,而不必创建一个新的向量变量并返回它?
我试过下面的方法,但是不起作用。还有花括号和直括号。

vector<int> foo()
{
    return <1,2>;
}
jvlzgdj9

jvlzgdj91#

如果你使用C++11或更高版本,只需写:

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

{1, 2}将被推导为一个initializer_list,并且它不会导致复制,因为我们有"复制省略"。因为它没有名称,这也被称为"返回值优化"。
您可以在中看到:https://en.cppreference.com/w/cpp/language/copy_elisionhttps://en.cppreference.com/w/cpp/utility/initializer_list

ars1skjm

ars1skjm2#

有没有一种方法可以以向量形式返回值,而无需创建新的向量变量并返回该变量?
您已经通过值返回,根据定义,该值包含复制。如果您希望避免复制,可以尝试通过引用返回
现在,对于C++11及以后的版本,我们应该将尖括号<>替换为大括号{},如下所示:

//vvvvvvvvvvv------------------>You're returning by value!
  vector<int> foo()
  {
//---------vvvvv------------->changed <> to {}
    return {1,2};
  }

相关问题