我已经在这里待了几个小时,但似乎无法找到解决方法。在您问之前,这不是一个作业问题。
因此,在这里,我有两个名为Matrix<T>
和Vector<T>
的自定义模板类,并且我有一个名为train(...)
的函数,它接受了一个名为{{1 }}和称为std::vector<VectorT<T>*>&
的{{1}}以及其他一些模板化的参数。此功能如下所述:
X
其中std::vector<Matrix<T>*>&
是Generators
,而template <typename Mat, typename Vec>
void train (vector<Mat*>& Generators,
const vector<Vec*>& X,
Vec* root_node, // This is assuming that the root node is in X
int n,
int q)
{
// Create a schreier tree out of the generating set and the input set
tuple<std::unordered_map<int, tuple<int, Mat*>>, size_t>
tree_info_ = FiniteField::ComputeSchreierTree(Generators, X, root_node, n, q);
std::unordered_map<int, tuple<int, Mat*>> tree_ = std::get<0>(tree_info_);
make_move(1, 1280, tree_, Generators, n, q);
}
是Mat
。上面的函数接受这些参数,并生成一个名为Matrix<T>
的{{1}},其中key是Vec
,值是Vector<T>
的{{1}}和{{1} }。
现在我要在此执行的操作是将此std::unordered_map<_key, _Tp, _Hash, _Pred, _Alloc>
和tree_
传递给另一个名为int
的函数,该函数定义如下:
std::tuple<_Elements ...>
这里的问题是当我尝试对其进行编译时,出现以下错误:
int
这是我第一次将多个嵌套的模板化类传递给模板化函数的经验,因此我不知道要在google中搜索的正确关键字组合,这就是为什么我至今无法做到这一点的原因的帮助将不胜感激。
谢谢!
答案 0 :(得分:0)
在
template <typename Mat, typename Vec>
void make_move(int i, int j,
unordered_map<int, tuple<int, Mat*>>& tree_,
vector<Mat*>& Generators, int n, int q);
Vec
无法推论(参数中未列出),因此您必须在调用时指定它:
make_move<Mat, Vec>(1, 1280, tree_, Generators, n, q);
但是可能有错字:
vector<Mat*>
是Vec
吗?make_move
是否应有Vec
模板参数?