繁体   English   中英

如何在 C++ 中通过引用返回向量

[英]How can I return vector by reference in C++

我想制作通过引用返回向量的函数。 但是返回的向量( returned_v )与vec.v ,而是一个复制的向量。 这意味着向量是按值返回的。 如何从vector_reference()获取引用的向量?

class Vec {
  public:
    std::vector<int> v = {1, 2, 3};
    std::vector<int>& vector_reference() {
        return v;
    }
};

int main() {
    Vec vec;
    std::vector<int> returned_v = vec.vector_reference();
    returned_v.clear();
    std::cout << returned_v.size() << std::endl; // result: 0
    std::cout << vec.v.size() << std::endl; // result: 3

    return 0;
}

returned_v是它获取从的返回值复制一个独立的对象vec.vector_reference() 您也应该将其声明为参考。

std::vector<int>& returned_v = vec.vector_reference();

函数vector_reference()中的引用是vec.v的引用。 然而, returned_v是副本vec.v ,而不是它的referrence。 两种方法可以帮助您:

  1. std::vector<int>& returned_v = vec.vector_reference();

  2. std::vector<int> returned_v = std::move(vec.vector_reference()); //C++ 11

暂无
暂无

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

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