在我的课程中,我尝试创建无符号2d向量,然后在获取其大小后在构造函数中初始化它。这是我的班级:
class RobotWorld {
private:
int n;
vector <vector<int>> v;
public:
RobotWorld (int n){
n = n;
v(n, vector<int>(n, n));
for(int i = 0; i < n; ++i){
v[i][0] = i;
}
}
};
当我这样做的时候,我收到一个错误:调用std :: vector不匹配。 你能否告诉我我的代码有什么问题以及如何改进它。
答案 0 :(得分:6)
你很亲密。构造类时,所有成员都在成员初始化列表中初始化。这是您的初始化需要的地方。当你在构造函数体中执行它时,执行variable_name(stuff)
尝试调用函数调用操作符而不是构造函数。这就是你得到编译器错误的原因,因为vector
没有这样的运算符。我们可以将代码更改为
RobotWorld (int n) : n(n), v(n, vector<int>(n, n)){
for(int i = 0; i < n; ++i){
v[i][0] = i;
}
}
现在n
和v
都已正确初始化,然后您操纵向量。