使用唯一指针成员初始化模板化矩阵类到矢量矢量

时间:2014-09-22 05:34:40

标签: c++ vector initialization member unique-ptr

我有

template<class T>
class Matrix{
public:
Matrix();
~Matrix();

private:
std::unique_ptr<std::vector<std::vector<T> > > PtrToMyMatrix;

};

我很难初始化PtrToMyMatrix。假设构造函数应该只在PtrToMyMatrix中放入一个指向T的1x1矩阵的指针。我该怎么写呢?

我想它就像是

Matrix<T>::Matrix():PtrToMyMatrix(//Here it goes the value
){};

在价值的位置,我认为它应该像

new std::unique_ptr<vector<vector<T> > >(// Here a new matrix
)

在新矩阵的位置,我认为它类似于

new vector<vector<T> >(// Here a new vector
)

代替新载体

new vector<T>(new T())

应该怎么做?

1 个答案:

答案 0 :(得分:1)

我想你是在这之后:

std::unique_ptr<std::vector<std::vector<T> > >
    PtrToMyMatrix(new std::vector<std::vector<T> >(1, std::vector<T>(1)));

构造函数为std::vector(size_type n, const value_type& val);(alloc missing)。

因此,您使用vector 1构建了vector内部1的外部T

然而,很少需要动态创建std::vector,因为它已动态地存储其内部数据。您通常只需按值实例化它:

std::vector<std::vector<T> > MyMatrix(1, std::vector<T>(1));