我有
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())
应该怎么做?
答案 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));