重载运算符<<用于标准容器

时间:2016-05-03 09:31:55

标签: c++ c++11 stl

我希望能够为<< namevector等标准容器编写map,因此我添加了{{1}的include标头定义例如

operator <<

template <class T> inline std::ostream& operator <<(std::ostream& ss, std::vector<T> const& vec) { auto it(begin(vec)); if (it != end(vec)) ss << *(it++); for (; it != end(vec); ++it) ss << " " << *it; return ss; }

但是,要使用它们,我总是必须写std::copy(cont.begin(), cont.end(), std::ostream_iterator<Type>(std::cout, " "));,因为找不到运算符。

当我使用各种命名空间时,我无法将它们添加到所有命名空间。

理想情况下,我想将它们添加到using ::operator<<;,这似乎可以与visual studio一起使用,但是根据标准,这是未定义的行为。

这是非正式的支持,即使它不是标准的吗?是否有更好的方法使它们可用而无需在任何地方编写std并且不知道它将提前使用的命名空间?

0 个答案:

没有答案