鱼C论坛

 找回密码
 立即注册
查看: 1855|回复: 4

STL中的ostream_iterator问题

[复制链接]
发表于 2014-11-3 15:28:28 | 显示全部楼层 |阅读模式
3鱼币
本帖最后由 风之残月 于 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的用法吗 ?谢谢啦!!

最佳答案

查看完整内容

是的,它的构造函数的第一个参数是ostream类型的引用,可以是cout,也可以是ofstream,这样就可以输出到文件中。 STL刚用起来确实让人感觉很爽。。。但是个人觉得比这个更重要的是变成能力的整体提升。就是说,具备用较冗长的代码实现各种功能并调试的能力。。。这种能力才是最可贵的。至于用STL优化代码之类的事情,相信平时多逛逛相关论坛,一天积累一些相关知识,是很愉快的事情。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-3 15:28:29 | 显示全部楼层
avatar10010 发表于 2014-11-3 18:46
谢谢啦,感觉还是不会用,不知道什么时候使用ostream_iterator,从名字上看他的第一个参数必须是输出流对 ...

是的,它的构造函数的第一个参数是ostream类型的引用,可以是cout,也可以是ofstream,这样就可以输出到文件中。

STL刚用起来确实让人感觉很爽。。。但是个人觉得比这个更重要的是变成能力的整体提升。就是说,具备用较冗长的代码实现各种功能并调试的能力。。。这种能力才是最可贵的。至于用STL优化代码之类的事情,相信平时多逛逛相关论坛,一天积累一些相关知识,是很愉快的事情。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-3 16:01:39 | 显示全部楼层
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可以省略,说明不是用宽字符集

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
拈花小仙 + 5 + 5 看导师的回帖最长学问

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2014-11-3 17:16:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-3 18:46:27 | 显示全部楼层
仰望天上的光 发表于 2014-11-3 16:01
ostream_iterator(cout, " ");的意思如下:
首先,ostream_iterator是一个类型的名字,就像string, vecto ...

谢谢啦,感觉还是不会用,不知道什么时候使用ostream_iterator,从名字上看他的第一个参数必须是输出流对象,是这样么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-21 15:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表