【发布时间】:2019-01-21 00:33:20
【问题描述】:
因此 std::to_string 适用于各种原始类型。但是,当尝试像矢量一样打印容器的元素时,我必须逐个元素地遍历矢量元素并单独打印每个元素。现在授予,像向量这样的东西可以相当于一个语句或循环,如下所示:
for_each(v.begin(), v.end(), [](int x) {cout << x <<", "; });
但是对于其他容器类,格式化数据类型可能会很麻烦。
相比之下,Java 或 Python 等语言具有在单个语句中打印大多数容器的函数。为什么 STL 不接受这些作为 std::to_string 中的参数或将 to_string 实现为容器类的成员函数?
【问题讨论】:
-
您展示的代码适用于任何容器。但请注意,它会在最后一个元素之后写一个逗号和一个空格。
-
一个
ostream_iterator有助于解决尾随分隔符问题,顺便说一句。 -
to_string应该以什么格式打印?一对方括号和一个逗号分隔的列表?像Json这样的东西?也许漂亮的印刷品?标准库旨在为尽可能广泛的应用程序提供实用程序。打印容器太小众了。根据自己的需要推出自己的解决方案并不难,因此不需要标准库解决方案。