Как динамически заполненный многомерный вектор без априори известен его размерности с ++ - PullRequest
0 голосов
/ 21 марта 2019

Я пишу класс для тензоров, он мне нужен для моей работы. Я понимаю, как создать динамический многомерный вектор, используя рекурсию, но я не знаю, как растянуть его до размерного размера, что мне нужно (например, vector<double> vec; vec.resize(6);). Но я хочу получить динамический вектор и создал шаблон класса. Может ли кто-нибудь помочь мне с этим? Это мой код:

template<typename T,size_t N>
struct tensor_traits 
{ 
     using type = vector< typename tensor_traits<T,N-1>::type>; 
};
template<typename T>
struct tensor_traits<T,0> 
{ 
     using type = T; 
};



template<class T,size_t N>
class tenzor
{
protected:
    typename tensor_traits<T, N>::type data;
    vector<size_t> dimensions;
public:
    tenzor()
    {
        dimensions.resize(N);
    }

    tenzor(vector<size_t> dim)
    {
        if(dim.size() == N)

        {
            dimensions = dim;
            data.resize(dim);
        }
        else
            throw::length_error("wrong format!!");
    }

    void resize(vector<size_t> siz)
   {
    //some code`enter code here`
   }

}
...