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

时间:2019-05-27 02:22:17

标签: c++ c++11

我正在创建一个char的二维向量数组作为类变量,但是我很难将向量添加到vector 数组中。

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

我尝试使用vector< vector<char> > row(size, vector<char> );,但是错误会显示我没有定义sizevector<char>。如果我用int sizevector<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;
}

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

1 个答案:

答案 0 :(得分:5)

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

此外,在row[i]实际上包含至少row个元素之前,您无法访问irow[i].push_back尝试将char元素推入向量矢量中第std::vector<char>个元素的i中(除非您从未创建第i个元素)。

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

row.push_back(std::vector<char>(size));
// or more simply
row.emplace_back(size);

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

row.emplace_back();

这是如何一次性插入size个元素的所有size个向量,以便可以对所有row[i][j]i使用j的方法小于size

row.resize(size, std::vector<char>(size));