2010-11-28 107 views
2

如何在具有零值的类的contstructor中初始化二维向量?这是行不通的:如何初始化类的构造函数中的向量

#include <vector> 
using namespace std; 

class matrix { 
public: 
    typedef int element_type; 
    matrix(int dim):data(dim, vector<int>(dim, 0)) { 
    } 
private: 
    vector<vector<element_type>> data; 
}; 

我必须编写一个析构函数来释放载体吗?

回答

5

更新: OP的代码现在从C++ 11开始有效。

更早版本的C++原来的答复:


你需要把它写这样的:

vector< vector<element_type> > data; 

因为>>否则解析为流运算符,这是无效的在这里。并且:不,你不需要在析构函数中释放它,因为你没有在堆上创建它。

+2

C++ 0x应该解决这个问题。 – Steve314 2010-11-28 21:39:45

2

我是否必须编写析构函数来释放载体?

不,因为您没有在构造函数中获取任何资源。这是RAII的美丽。