【发布时间】:2018-10-25 08:24:55
【问题描述】:
我不喜欢这样调用 3 维向量:
std::vector<std::vector<std::vector<value_type>>>
更不用说我是否想要 4 维甚至更高。
有没有什么方法可以使用模板元编程或某种技术来声明具有更高可读性的高维向量?
例如能够像这样声明一个高维向量(只是一个例子):
t_vector<5, {10, 2, 2, 2, 2}, int> a;
得到一个容量为[10][2][2][2][2]的。
有可能做这样的事情吗? 否则为什么?
【问题讨论】:
-
您所说的
high dimensional vector是什么意思?你需要什么功能? -
我的意思是能够使用用户定义的糖语法(如问题中)为向量声明任意数量的层(在编译期间)。声明容器后,我希望它具有与它对应的功能相同的功能(通过 std::vector)。
-
我对模板元编程比较陌生。我已经看到 std::tuple 是如何扩展的,因为我没有足够的经验来应用它来为我想要的向量创建糖语法。
-
如果你想要编译时固定容量,为什么要
vector? -
Boost 多维数组库怎么样?
标签: c++ c++11 templates template-meta-programming