C++ STL中,ostream_iterator<int,char>pp(cout," ")是什么意思?

ostream_iterator<int,char>pp(cout,"");copy(one.begin(),one.end(),pp);书上意思是说,把list链表内容... ostream_iterator<int,char>pp(cout," ");
copy(one.begin(),one.end(),pp);

书上意思是说,把list链表内容拷贝到输入流中?

那我不明白(cout," ");是干什么用,直接

ostream_iterator<int,char>pp;
copy(one.begin(),one.end(),pp);

这样写不行么?(cout," ");到底是什么用的
展开
 我来答
zjfaok
2014-08-29 · TA获得超过6806个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1613万
展开全部
cout 指定是哪个流(你也可以指定是某个文件流),“ ” 指定元素间的分隔符
更多追问追答
追问
他就是想把容器内各个数据复制到输出流中,接下来就cout<<endl

你说的分隔符,是哪一步实现的?

是copy把内容复制到已经有分隔符的输出流中,

还是说,copy把内容变成了 内容+分隔符,然后复制到输出流中?

还有啊,(cout, " ")中cout到底是什么啊,就是指输出流?

那ostream_iterator这个是什么?这个是 “流”迭代器?
追答

ostream_iterator是“流”迭代器,如果有ostream_iterator<int,char>  pp(cout," ");,那么*++pp = a;就等价于cout << a << " ";


调用copy所做的相当于

for (list<int>::iterator a = one.begin(); a != one.end(); a++)
    *++pp = *a;

再由于*++pp = a;等价于cout << a << " ";以上代码又可以转化成

for (list<int>::iterator a = one.begin(); a != one.end(); a++)
    cout << *a << " ";

这样就不难理解了

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式