我正在创建char的2d向量数组作为类变量,但是在将向量添加到vector <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;
}
Run Code Online (Sandbox Code Playgroud)
我希望它可以将向量数组添加到向量数组中,并且可以row[i][j]在程序的其余部分中使用。但这给了编译器错误,说error: expected primary-expression before ‘col’我不知道该怎么办。
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]所有的i和j是小于size:
row.resize(size, std::vector<char>(size));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |