2010-11-28 6 views
2

ゼロの値を持つクラスのコンストラクタで2次元ベクトルを初期化するにはどうすればよいですか?これは動作しません:クラスのコンストラクタでベクトルを初期化する方法

#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

2

ベクターを解放するためにデストラクタを作成する必要がありますか?

いいえ、コンストラクタでリソースを取得していないためです。それはRAIIの美しさです。

関連する問題