通用打印函数 我手头没有一本好的C++书,谷歌没有什么有用的东西。
这是怎么回事?从概念上讲,这里发生了什么?从技术上讲,operator的原型是不是很模糊,但我想试一试:通用打印函数 我手头没有一本好的C++书,谷歌没有什么有用的东西。,c++,operator-overloading,iostream,C++,Operator Overloading,Iostream,这是怎么回事?从概念上讲,这里发生了什么?从技术上讲,operator的原型是不是很模糊,但我想试一试: 从技术上讲,是运营商的原型吗?你指的是允许不同运营商使用的原型?看一看。我有点想投票来结束这场闹剧,但后来我怀疑了,因为这似乎不仅仅是问操作符重载是如何工作的。我不确定。它总是同一个运算符,只对不同类型重载,特别是以std::ostream&(或另一种类型的流)作为左操作数。在这种情况下,您必须小心返回对传递给运算符以允许链接的同一流的引用。现在我们讨论的是…右侧操作数定义在哪里?@chri
从技术上讲,是运营商的原型吗?你指的是允许不同运营商使用的原型?看一看。我有点想投票来结束这场闹剧,但后来我怀疑了,因为这似乎不仅仅是问操作符重载是如何工作的。我不确定。它总是同一个运算符,只对不同类型重载,特别是以
std::ostream&
(或另一种类型的流)作为左操作数。在这种情况下,您必须小心返回对传递给运算符以允许链接的同一流的引用。现在我们讨论的是…右侧操作数定义在哪里?@chrisaker:对于映射,只有在第二部分使用运算符时,它才起作用,值得注意的是,要求一个人通过输出范围的结束将是完全多余的。“复制A->B到从C开始的地方”是很常见的;请参阅:memcpy
。
template <typename Container>
std::ostream& operator<<(std::ostream& os, const Container& c)
{
std::copy(c.begin(), c.end(),
std::ostream_iterator<typename Container::value_type>(os, " "));
return os;
}