【发布时间】:2018-09-06 14:43:08
【问题描述】:
到目前为止,我写了这个:
template <typename TType>
void print_vector(const std::vector<TType>& vec)
{
typename std::vector<TType>::const_iterator it;
std::cout << "(";
for(it = vec.begin(); it != vec.end(); it++)
{
if(it!= vec.begin()) std::cout << ",";
std::cout << (*it);
}
std::cout << ")";
}
template<>
template <typename T2>
void print_vector(const std::vector< std::vector<T2> >& vec)
{
for( auto it= vec.begin(); it!= vec.end(); it++)
{
print_vector(*it);
}
}
第一个函数适用于std::vector< double> 等。现在我也希望能够打印std::vector< std::vector< TType>> 的东西。第二部分没有编译,但这是我解决任务的“想法”。关于如何实现这种行为的任何建议?
Compilation Error: too many template-parameter-lists
【问题讨论】:
-
你不能部分特化一个函数,你需要创建一个新的重载
-
请注意,您的第二个
print不会在内部向量周围输出额外的(, )。