STL中的ostream_iterator问题
本帖最后由 风之残月 于 2014-11-9 22:33 编辑vector<int> v{ 1, 2,3, 2, 7, 5,7 };
sort(v.begin(), v.end());
unique_copy(v.begin(), v.end(), ostream_iterator<int, char>(cout, " "));
问一下这里的ostream_iterator<int, char>(cout, " ")是什么意思,可以帮我讲讲ostream_iterator的用法吗 ?谢谢啦!!
avatar10010 发表于 2014-11-3 18:46
谢谢啦,感觉还是不会用,不知道什么时候使用ostream_iterator,从名字上看他的第一个参数必须是输出流对 ...
是的,它的构造函数的第一个参数是ostream类型的引用,可以是cout,也可以是ofstream,这样就可以输出到文件中。
STL刚用起来确实让人感觉很爽。。。但是个人觉得比这个更重要的是变成能力的整体提升。就是说,具备用较冗长的代码实现各种功能并调试的能力。。。这种能力才是最可贵的。至于用STL优化代码之类的事情,相信平时多逛逛相关论坛,一天积累一些相关知识,是很愉快的事情。 ostream_iterator<int, char>(cout, " ");的意思如下:
首先,ostream_iterator<int, char>是一个类型的名字,就像string, vector<int>这样的类型
ostream_iterator<int, char>tmp(cout, " ");就是构造一个名字叫做tmp的对象。
ostream_iterator<int, char>(cout, " ");是构造了一个没有名字的临时对象(反正只要传到函数里就OK)
其中模板参数int,说明这个对象输出的都是int类型,模板参数char可以省略,说明不是用宽字符集 仰望天上的光 发表于 2014-11-3 16:01
ostream_iterator(cout, " ");的意思如下:
首先,ostream_iterator是一个类型的名字,就像string, vecto ...
谢谢啦,感觉还是不会用,不知道什么时候使用ostream_iterator,从名字上看他的第一个参数必须是输出流对象,是这样么?
页:
[1]