2010-11-28 9 views
2

값이 0 인 클래스의 컨스트럭터에서 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의 아름다움입니다.

관련 문제