Я пишу класс для тензоров, он мне нужен для моей работы. Я понимаю, как создать динамический многомерный вектор, используя рекурсию, но я не знаю, как растянуть его до размерного размера, что мне нужно (например, 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`
}
}