Std :: vector和Constructor

时间:2012-08-15 17:20:32

标签: c++ project

我有一些像这样的代码:

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> >元素的问题。所以你能告诉我怎么做吗?感谢:。)

2 个答案:

答案 0 :(得分:5)

this reference page:

上使用(2)下的构造函数
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

答案 1 :(得分:1)

您可以添加一个占用行数的构造函数:

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);

您可能希望向访问运营商添加一些范围检查。