【发布时间】:2016-08-17 13:31:08
【问题描述】:
我写了一个函数joins the rows of two 2D arrays:
template <typename S, typename T>
Array<typename S::Scalar, Dynamic, Dynamic> join_rows(const ArrayBase<S> & A, const ArrayBase<T> & B) {
Array<typename S::Scalar, Dynamic, Dynamic> C (A.rows(), A.cols()+B.cols());
C << A, B;
return C;
}
我想写一个更通用的函数,可以连接两个以上的数组。
它应该能够与任何可迭代容器一起使用,例如。 std::list 或 std::vector,所以我会使用模板模板参数。
我可以很容易地用两个 for 循环来纠正函数体,这不是问题,我只是在努力弄清楚这样一个函数的正确类型是什么。
(ps。我什至不确定我上面的代码是否有最好的类型,但它似乎可以完成这项工作)
【问题讨论】:
-
您可以考虑使用一对迭代器,或者只是一个任意容器。我认为模板模板参数没有必要。
-
你能有一个
vector的二维数组吗?不同的数组(可以)有不同的类型,对吧? -
您能否给出一些示例代码来说明如何调用此函数?
-
@IlyaPopov,如果我使用这对迭代器,我怎么知道我有多少列?
-
@user357269 您必须遍历整个序列并计数。不过,我不确定迭代器的类型是什么