如何从方法返回std :: vector而不是每次都复制一次?

zeb*_*bra 0 c++

我很确定这是一些指针业务,但我已经离开了C++一段时间了.

基本上,我有一个类,有一个方法getVector()返回std::vector它已存储为类变量.

我想访问这些元素,但不是每次getVector()调用时都复制整个向量.对此有什么正确的解决方法?存储为类变量的向量本身不是指针.

Lig*_*ica 9

返回对向量的引用.

  1. 如果调用范围应该能够修改向量:

    class MyClass {
        std::vector<foo> v;
    
      public:
        std::vector<foo>& getVector() {
           return v;
        }
    };
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果调用范围不需要修改向量:

    class MyClass {
        std::vector<foo> v;
    
      public:
        const std::vector<foo>& getVector() const {
           return v;
        }
    };
    
    Run Code Online (Sandbox Code Playgroud)

两者都是完全"安全"的,因为向量不是函数范围的本地.