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," ");到底是什么用的 展开
copy(one.begin(),one.end(),pp);
书上意思是说,把list链表内容拷贝到输入流中?
那我不明白(cout," ");是干什么用,直接
ostream_iterator<int,char>pp;
copy(one.begin(),one.end(),pp);
这样写不行么?(cout," ");到底是什么用的 展开
1个回答
展开全部
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 << " ";
这样就不难理解了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询