0
我已经写了下面的一段代码:递归矢量模板
template<typename T>
ostream& operator<<(ostream& os, const vector<T>& v) {
os << "{";
for (auto i=v.begin(); i!=v.end(); ++i) {
os << *i << " ";
}
os << "}";
return os;
}
这经常vector<int>
情况下能正常工作,但我想要做的是这样的:
vector<vector<int> > v={{1,2},{3,4}}
cout << v; // Should print {{1 2 } {3 4 } }
相反,我得到编译错误(下面的文本,与长长的候选人名单):test.cpp|212|error: no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and 'std::vector<std::vector<int> >')|
我以为模板函数可以使用两次,递归。我错了吗?如果不是,是什么给了?如果是这样,有没有办法使这个通用的没有重复的代码?
如果您不明白错误消息,则不建议对其进行汇总。 – Yakk
提供[MCVE]。 – Yakk