为什么 std::to_string 不支持容器类作为输入?
Why doesn't std::to_string support container classes as input?
所以std::to_string适用于各种基元类型。但是,当尝试打印容器的元素(如矢量)时,我必须逐个元素遍历矢量元素并单独打印每个元素。现在,对于像向量这样的东西,这可以相当于一个语句或循环,如下所示:
for_each(v.begin(), v.end(), [](int x) {cout << x <<", "; });
但是对于其他容器类,格式化数据类型可能会很麻烦。
相比之下,像Java或Python这样的语言具有在单个语句中打印大多数容器的函数。为什么 STL 不接受这些作为 std::to_string 中的参数,或者将to_string实现为容器类的成员函数?
Vector 不知道如何将自定义类转换为字符串,除非自定义类提供字符串转换。现在,自定义类不需要提供字符串转换,因为它对该类的意义可能较小。
从这个意义上说,容器是非常通用的。就像你指出的,它很容易实现。非常典型的方法是<<
运算符重载如下:
ostream& operator<<(ostream& cout, const vector<int>& sorted)
{
cout << "Array => ";
for( auto i : sorted ) {
cout << i << ", ";
}
cout << endl;
return cout;
}
或者使用stringstream
类或使用for_each
...
相关文章:
- 如何正确实现容器类中元素的更改?
- C++ 用于检查容器类中是否存在函数和隐式推导规则的概念
- 容器类中的类迭代器
- 函数返回包含输入容器的特定元素的容器
- 根据C++中的外部输入选择类
- 当 C++ 中函数参数的输入类型(类)错误时的错误处理
- 根据用户输入声明类
- 返回持有 std::mutex 锁的 RAII 容器类
- C++ 如何在容器类复制构造函数中复制分配器对象
- 如何使用迭代器设计模式为 C++ 中的包装容器类提供多个迭代器?
- 有没有办法根据用户的输入访问类对象的信息?
- 如何在模板容器类中实现复制构造函数和赋值运算符
- 重载输入 重载输入派生类中的基类
- 通用功能模板返回一个大小的容器比输入容器的大小小
- 无论如何,是否可以使用用户输入的类项名称来访问该项中的数据
- 在容器类中使用带有共享_ptr/unique_ptr的虚拟对象
- 在自定义容器类上反转基于范围的 for 循环
- C++ 在容器类中使用自定义比较器的排序集
- 在类组合中,使包含的类可以访问容器类变量
- 为什么 std::to_string 不支持容器类作为输入?