【发布时间】:2021-03-19 17:01:58
【问题描述】:
我的目标是构建一个函数,该函数将给定维度作为可变参数,将数组转换为 n 维向量。
例如二维。
template<T>
vector<vector<T>> from_array(T *array, size_t d1, size_t d2) {
auto v = vector<vector<T>();
v.reserve(d2);
for (n = 0; n < d2; n++) {
vector(array, array + size)
}
}
我已经用谷歌搜索了一段时间,似乎我想要Homogeneous variadic function parameters,但它们在 c++ 中不可用。但也许有更简单的解决方案或解决方法?
我似乎也需要使用decltype,但我对c++的经验几乎为零,所以我不确定如何使用它。
【问题讨论】:
-
请举例说明如何使用模板(这更好地定义了它应该如何实现,然后是你的实现方法)。
-
这里有一个更根本的问题:C++ 不能这样工作。除非您明确检查参数的每个可能值并实例化相应的类型实例,否则您无法根据某些运行时参数创建不同的类型。
-
我个人会放弃返回向量,而是编写一个封装一维向量的类,并通过提供正确的访问函数将缓冲区视为您需要的任何维度。这可以为您提供最佳性能,并且更容易计算和编写。
-
@SamVarshavchik 并非如此。我认为参数的数量在这里定义了返回类型,这是在编译时知道的。
-
可以在此处查看该想法的粗略草图:您可以在此处查看基本示例:stackoverflow.com/questions/43358369/…