我正在尝试重载流插入操作符,所以我可以将std :: vector打印到std :: cout,但我的语法有问题。
这就是我的尝试:
template<typename T> std::ostream & operator<<(std::ostream &os, std::vector<T> &v)
{
std::copy(v.begin(), v.end(), std::ostream_iterator<T>(os, ', '));
return os;
};
我想这样用它:
std::vector<float> v(3, 1.f);
std::cout << v;
这种运算符重载的正确语法是什么?
答案 0 :(得分:2)
但是代码几乎没问题:
', '
不正确:使用", "
const std::vector<T> &v
;
:)对于记录,', '
是类型int
的{{3}},因此编译器会抱怨std::ostream_iterator
构造函数的重载与参数列表'(std::ostream, int)'
不匹配。