我正在创建一个char的二维向量数组作为类变量,但是我很难将向量添加到vector
我正在使用C ++ 11标准运行gcc。
我尝试使用vector< vector<char> > row(size, vector<char> );
,但是错误会显示我没有定义size
和vector<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’
我不知道该怎么办。
答案 0 :(得分:5)
vector<char> col
是无效的表达式。它几乎看起来像是变量的声明(在这里不是您所需要的),只是它缺少分号来完成该语句。
此外,在row[i]
实际上包含至少row
个元素之前,您无法访问i
。 row[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));