c++ primer中有一段话,在352页
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/27 23:31:08
c++ primer中有一段话,在352页
“一旦给ostream_iterator对象赋了一个值,写入就提交了.赋值后,没有办法再改变这个值.此外,ostream_iterator对象中每个不同的值都只能正好输出一次.”
这句话我百思不得其解.
“一旦给ostream_iterator对象赋了一个值,写入就提交了.赋值后,没有办法再改变这个值.此外,ostream_iterator对象中每个不同的值都只能正好输出一次.”
这句话我百思不得其解.
这里确实有问题.
实际上,ostream_iterator作为一个输出流的迭代器,"一旦赋值,写入就提交,没法再改变,每个值都只输出一次",这些性质显然都应该满足.你想无论是屏幕输出还是文件输出,都是写入流了就不能改变并且都会输出一次,所以ostream_iterator当然也要满足这个性质.
我觉得你不明白的地方是,书里给的例子是 *out_iter++ = *in_iter++
那要是不++,多搞几次out_iter = 啥啥,起码语法上没有错误,不就算重复赋值了吗?
写个试试:
ostream_iterator os_iter(cout," ");
*os_iter = 1.0;
os_iter++;
*os_iter = 2.0;
*os_iter = 3.0;
发现,输出是 1 2 3 ,说明不++也没用,编译器自动就给迭代器后移了.
所以,我觉得基本可以理解成,*out_iter++ = 啥啥 是比较规范的写法,直接都来 *out_iter = 啥啥 也没啥问题,编译器也会自动处理,stl 毕竟还是比较健壮的.
感觉这里的标准确实有些瑕疵,毕竟ostream_iterator只是一个对ostream的包装,而因为迭代器和stream的性质的区别,没法规定得十分完美.好在一般要用到ostream_iterator的时候都是copy vector 到 ostream_iterator的那个函数,基本就够了.
实际上,ostream_iterator作为一个输出流的迭代器,"一旦赋值,写入就提交,没法再改变,每个值都只输出一次",这些性质显然都应该满足.你想无论是屏幕输出还是文件输出,都是写入流了就不能改变并且都会输出一次,所以ostream_iterator当然也要满足这个性质.
我觉得你不明白的地方是,书里给的例子是 *out_iter++ = *in_iter++
那要是不++,多搞几次out_iter = 啥啥,起码语法上没有错误,不就算重复赋值了吗?
写个试试:
ostream_iterator os_iter(cout," ");
*os_iter = 1.0;
os_iter++;
*os_iter = 2.0;
*os_iter = 3.0;
发现,输出是 1 2 3 ,说明不++也没用,编译器自动就给迭代器后移了.
所以,我觉得基本可以理解成,*out_iter++ = 啥啥 是比较规范的写法,直接都来 *out_iter = 啥啥 也没啥问题,编译器也会自动处理,stl 毕竟还是比较健壮的.
感觉这里的标准确实有些瑕疵,毕竟ostream_iterator只是一个对ostream的包装,而因为迭代器和stream的性质的区别,没法规定得十分完美.好在一般要用到ostream_iterator的时候都是copy vector 到 ostream_iterator的那个函数,基本就够了.
c++ primer中有一段话,在352页
购买哪翻译的c++ primer比较好?还有有C基础学C++primer好还是C++primer plus好?
在PRIMER胶水中稀释剂是用甲苯好呢?还是用乙酸乙脂?
求高手解释C++primer中的一句话
c primer plus的plus是什么?
c++ primer 中 ※ 的意思
C Primer Plus和C++ Primer Plus这两本书有啥区别?
在鲁迅的作品中有一段话
c语言中不明白的一段话
一段双链DNA包含1000BP,其组成中G+C占60%,那么在此DNA中胸腺呤残基有多少?
初中毕业看c primer plus看得懂吗,初中数学英语还不错.
英语翻译在《A MILLION DOLLAR LESSON》这篇文章中,有一段话:I had flown into Da