[英]Why doesn't std::to_string support container classes as input?
因此std :: to_string适用于各种原始类型。 但是,当尝试像矢量一样打印容器的元素时,我必须逐个元素遍历vector并分别打印。 现在被授予,使用诸如矢量之类的东西,就等于一个语句或循环,如下所示:
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
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.