因此std :: to_string适用于各种原始类型。但是,当尝试像矢量一样打印容器的元素时,我必须逐个元素遍历vector并分别打印。现在被授予,使用诸如矢量的东西,就等于一个语句或循环,如下所示:
for_each(v.begin(), v.end(), [](int x) {cout << x <<", "; });
,但是与其他容器类一起使用,格式化数据类型可能会很麻烦。
相反,Java或Python之类的语言具有可在单个语句中打印大多数容器的函数。为什么STL不接受这些作为std :: to_string中的参数,或者不实现to_string作为容器类的成员函数?
答案 0 :(得分:2)
Vector不知道如何将自定义类转换为字符串,除非自定义类提供字符串转换。现在,不需要自定义类来提供字符串转换,因为这对于该类来说可能意味着更少的意义。
从这个意义上说,容器是非常通用的。
就像您指出的那样,它非常容易实现。非常典型的方法是如下重载<<
运算符:
ostream& operator<<(ostream& cout, const vector<int>& sorted)
{
cout << "Array => ";
for( auto i : sorted ) {
cout << i << ", ";
}
cout << endl;
return cout;
}
或者使用stringstream
类或使用for_each
...