[英]Std::vector and Constructor
我有一些这样的代码:
class A{
public:
A();
private:
vector<vector<int> > mat;
int a;
}
默认构造函数应该是什么样子?
A::A(): mat(10(10)),a(0){};
但是对我来说还有一个问题。我不知道“行”的数量。 ( vector<vector<int> >
应该具有n个元素,而vector<int>
应该具有4个元素)而且我也有访问vector<vector<int> >
的元素的问题。 那你能告诉我怎么做吗? 谢谢。:)
A::A() : mat(10, std::vector<int>(10)), a(0) { }
当然,您也可以传递变量。 例如:
A::A(size_t n_rows, size_t n_cols) : mat(n_rows, std::vector<int>(n_cols)), a(0) {}
要访问元素,请使用两次对operator[]
调用:
std::cout << mat[1][1]; // will print 0, as vector's elements are default initialized
第一个调用返回一个参考vector<int>
,第二个参考来int
。
您可以添加一个接受行数的构造函数:
A(unsigned int rows): mat(rows, std::vector<int>(4)), a(0) {};
为了访问元素,可以添加一些访问运算符或方法。 例如
class A{
public:
public:
A(unsigned int rows): mat(rows, std::vector<int>(4)), a(0) {};
const int& operator()(unsigned int row, unsigned int col) const {
return mat[row][col];
}
private:
vector<vector<int> > mat;
int a;
};
然后
A a;
int i = a(3,4);
您可能要向访问运算符添加一些范围检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.