矢量返回空

时间:2014-03-17 22:38:05

标签: c++ vector

注意:由于种种原因,我无法发布完整的来源,但我会给出基本的想法。

class Whatever{
private:
std::vector<int> vector;

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

如果我要调用getVector(),之前填充的向量将为空。 e.g。

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

这将返回 0

有什么建议吗?

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

1 个答案:

答案 0 :(得分:3)

  

f我要调用getVector(),之前填充的矢量就是   空。

     无论什么阶级; std :: cout&lt;&lt; &#34; \ n \ n&#34; &LT;&LT; 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;
}

将始终返回等于的向量

你说:

  

注意:原始矢量确实被填充,但内容确实如此   不转移到新的载体。

我相信你是这样做的:

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