C++ stl 容器的重载 << 运算符

Abh*_*and 4 c++ stl ofstream

我希望我可以使用 cout << 打印集合/矢量/地图的内容。对于 stl 设计者来说,实现起来似乎并不困难:假设 << 是为 T 定义的,容器的 << 可以迭代元素并使用 ofstream << 打印它们。

有没有一种我不知道的简单方法可以打印它们?

如果没有,有简单的解决方案吗?我在一些地方读到扩展 stl 类是一个坏主意。是这样吗,为什么?

定义一个重载打印函数之类的东西怎么样?编辑:我正在寻找一个递归函数,它可以处理容器的容器......我同意不同的人会喜欢不同的格式,但可重写的东西总比没有好

cel*_*chk 5

输出 STL 容器的最简单方法可能是

std::copy(cont.begin(), cont.end(),
          std::ostream_iterator<Type>(std::cout, " "));
Run Code Online (Sandbox Code Playgroud)

其中Type是 元素的类型cont(例如,如果cont是 类型std::vector<int>,则Type必须是int)。

当然,std::cout您也可以使用任何 ostream。