c++ - 为 C++ STL 容器重载 << 运算符

标签 c++ stl ofstream

我希望我可以使用 cout << 打印集合/vector/ map 的内容。对于 STL 设计者来说实现起来似乎并不难:假设 << 是为 T 定义的,<< 对于容器来说可以遍历元素并使用 ofstream << 打印它们。

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

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

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

最佳答案

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

std::copy(cont.begin(), cont.end(),
          std::ostream_iterator<Type>(std::cout, " "));

哪里Typecont 的元素类型(例如,如果 contstd::vector<int> 类型,则 Type 必须是 int )。

当然不是std::cout您可以使用任何 ostream。

关于c++ - 为 C++ STL 容器重载 << 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9319813/

相关文章:

c++ - Win32 选项卡控件灰色背景

c++ - 此代码是否访问 C++ 类中的关联数组?

c++ - 我该如何处理这个 CP 任务?

c++ - 将 vector 复制到 STL 中的列表的最佳方法?

c++ - 使用记录器的基于策略的方法

c++ - 在QT中点击按钮创建按钮

python - 为 C++ 项目创建 Python 绑定(bind)的常用技术是什么?

c++ - 如何修复我的 STL 样式容器以容纳不完整或抽象类型?

c++ - 写很多txt文件(90),每个文件5MB,耗时1400s

c++ - ofstream 输出字符串/字符而不是 double