【发布时间】:2011-05-03 22:03:34
【问题描述】:
重载输出流运算符的推荐方法是什么?以下可以不完成。如果没有为类型 T 定义运算符
template < class T >
inline std::ostream& operator << (std::ostream& os, const std::vector<T>& v)
{
os << "[";
for (std::vector<T>::const_iterator ii = v.begin(); ii != v.end(); ++ii)
{
os << " " << *ii;
}
os << " ]";
return os;
}
编辑:它确实编译,问题不相关并且在命名空间中。感谢您的帮助。
【问题讨论】:
-
能否详细说明命名空间问题及其解决方案?当参数类型来自 std 时,ADL 将无法在全局命名空间中找到这样的重载函数,并且您不能将其放入 std。你是怎么解决的?
-
C++11 语法:
for (auto &i : vec) {}使代码更短 -
@Charles 编译应该是
for(const auto&i:vec)。
标签: c++ templates vector operator-overloading