所以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
...