繁体   English   中英

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

[英]How do I return specific vector elements in c++ elegantly

我正在处理一个必须返回类型向量的问题。 我知道矢量的大小正好是两个。 有没有一种方法可以在不创建新的向量变量并返回它的情况下以向量形式返回我的值?

我尝试了以下方法,但没有用。 以及花括号和直括号。

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

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

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

{1, 2}将被推断为一个 initializer_list,并且它不会导致复制,因为我们有“复制省略”。 由于它没有名称,因此也称为“返回值优化”。

你可以看到: https://en.cppreference.com/w/cpp/language/copy_elision https://en.cppreference.com/w/cpp/utility/initializer_list

有没有一种方法可以在不创建新的向量变量并返回它的情况下以向量形式返回我的值?

您已经按值返回,根据定义,该值涉及副本。 如果您想避免复制,您可以尝试通过引用返回。


现在,对于 C++11 及以后的版本,我们应该用大括号{}替换尖括号<> ,如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM