2010-11-28 71 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的美麗。

相關問題