Vector is returned empty

Vector is returned empty

本文关键字:empty returned is Vector      更新时间:2023-10-16

注意:由于各种原因,我不能发布完整的源代码,但我会给出基本的想法。

class Whatever{
private:
std::vector<int> vector;
public:
std::vector<int> getVector() {
    return vector;
}

如果调用getVector(),则先前填充的向量将为空。例如

whatever Class;
std::cout << "nn" << Class.getVector().size();

返回0

任何建议吗?

注意:原向量确实被填充,但内容不会转移到新向量。

如果我要调用getVector(),那么先前填充的向量将是空的。

无论阶级;std:: cout & lt; & lt;" n n"& lt; & lt;.size Class.getVector () ();

这将返回0。任何建议吗?

你忘记填充向量了

class Whatever{
private:
  std::vector<int> v_;
public:
  Whatever ( int n) : v_( n) {}
  std::vector<int>& getVector() {
                 ^^^ // most probably you want to avoid copy
      return v_;
  }

};


你原来的定义:

std::vector<int> getVector() {
    return vector;
}

将始终返回vector所等于对象的副本

你说:

注意:原来的向量确实被填充了,但是内容被填充了不能传递给新向量

我确信你是这样做的:

Whatever w;
std::vector<int> v = w.getVector();
v.push_back( 107);
//... etc
std::vector<int> v2 = w.getVector();  // empty