c++ - 如何在没有先验知道其维度的情况下动态填充多维向量 c++
问题描述
我正在为张量写一门课,我的工作需要它。我想出了如何使用递归创建动态多维向量,但我不知道如何将它拉伸到我需要的维度大小(像这样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`
}
}
解决方案
推荐阅读
- google-bigquery - 如何在 BigQuery 中按几何顺序生成行?
- c++ - 为什么 operator<< 不会将我的客户类对象隐式转换为字符串
- linux - 在 Docker 文件中使用 pip 安装 aws cli
- javascript - MouseEvent('click') 触发,而 Event('click') 不触发
- xamarin - 禁用滑动视图不处理内容上的点击手势事件
- assembly - 零扩展立即值以适合寄存器
- c# - Roslyn:将 using 语句添加到语法树
- python - Python pandas如何将df:列值转换为行值?
- c++ - A类中的B类继承A类
- python - (-212:Parsing error) 使用 yolo、google colab 和 opencv 进行对象检测