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

C++ How to add vector in a vector? vector.push_back( vector<> )?

本文关键字:向量 back lt gt vector C++ 添加 push      更新时间:2023-10-16

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

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

我尝试使用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;
}

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

vector<char> col

不是有效的表达式。它几乎看起来像一个变量的声明(这不是你在这里需要的),除了它缺少一个分号来完成语句。

此外,在row实际包含至少i个元素之前,您无法访问row[i]row[i].push_back尝试将 char 元素推送到作为向量向量的第i个元素的std::vector<char>中(除非您从未创建过第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]用于小于size的所有ij

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