C ++如何在向量中添加向量?vector.push_back(vector <>)?

Ant*_*ung 0 c++ c++11

我正在创建char的2d向量数组作为类变量,但是在将向量添加到vector <vector>数组时遇到了麻烦。

我正在使用C ++ 11标准运行gcc。

我尝试使用,vector< vector<char> > row(size, vector<char> );但错误将显示我未定义sizevector<char>。如果我定义它int size,并vector<char> col它会认为这是一个新的函数声明,因为我把它作为一个类变量。

因此,我使用通常的方法vector< vector<char> > row;并具有向其中添加另一个向量的功能。所以我用,this->row[i].push_back( vector<char> col);但随后出现错误提示error: expected primary-expression before ‘col’。我也尝试使用,this->row[i].push_back( vector<char> );但错误仍然存​​在error: expected primary-expression before ‘)’。这可能是愚蠢的,但我不知道如何将向量添加到向量中。

class Vector2d {
private:
  int size;
  vector< vector<char> > row;
public:
  void make2d();
};

void Vector2d::make2d() {
  for (int i = 0; i < this->size; i++) {
    this->row[i].push_back( vector<char> col );  // compile error here
    for (int j = 0; j < this->size; j++) {
      this->row[i][j];
    }
  }
  cout << "It works!" << endl;
}
Run Code Online (Sandbox Code Playgroud)

我希望它可以将向量数组添加到向量数组中,并且可以row[i][j]在程序的其余部分中使用。但这给了编译器错误,说error: expected primary-expression before ‘col’我不知道该怎么办。

eer*_*ika 5

vector<char> col不是有效的表达式。它几乎看起来像是变量的声明(此处不是您所需要的),只是它缺少分号来完成该语句。

此外,您将无法访问row[i],直到row实际上包含至少i元素。row[i].push_back尝试将char元素推入vector std::vector<char>ith元素中,除非您从未创建过ith元素。

鉴于在以下循环中,您似乎假设插入的向量应具有size元素,因此这是如何将单个size元素向量插入向量的向量中:

row.push_back(std::vector<char>(size));
// or more simply
row.emplace_back(size);
Run Code Online (Sandbox Code Playgroud)

如果您想插入一个空向量,只需使用:

row.emplace_back();
Run Code Online (Sandbox Code Playgroud)

这里是你可以插入所有size的向量size元素一个去,这样就可以使用row[i][j]所有的ij是小于size

row.resize(size, std::vector<char>(size));
Run Code Online (Sandbox Code Playgroud)