c++的io迭代器怎么会这样输出呢
#include<iterator>#include<iostream>intmain(){inta[3]={1,2,3};std::ostream_iterator<i...
#include<iterator>
#include<iostream>
int main()
{
int a[3] = {1,2,3};
std::ostream_iterator<int, char> out_iter(std::cout);
std::istream_iterator<int, char> cin_iter(std::cin);
copy(a, a+3, out_iter); #1
a[1] = *cin_iter; #2
copy(a, a+3, out_iter); #3
return 0;
}
我的预想
123123456
11234563
按照 #1 #2 #3
会有这样的结果
可实际是
123456
12341234563
好像顺序是 #2 #1 #3
可能有点小白 这是我看c++ primer plus 学到迭代器那一章 自己瞎搞出来的 展开
#include<iostream>
int main()
{
int a[3] = {1,2,3};
std::ostream_iterator<int, char> out_iter(std::cout);
std::istream_iterator<int, char> cin_iter(std::cin);
copy(a, a+3, out_iter); #1
a[1] = *cin_iter; #2
copy(a, a+3, out_iter); #3
return 0;
}
我的预想
123123456
11234563
按照 #1 #2 #3
会有这样的结果
可实际是
123456
12341234563
好像顺序是 #2 #1 #3
可能有点小白 这是我看c++ primer plus 学到迭代器那一章 自己瞎搞出来的 展开
展开全部
针对你的程序做如下修改:
#include<iterator>
#include<iostream>
#include<algorithm> // for std::copy
int main()
{
int a[3] = {1,2,3};
// 添加一个空格间隔符,用于后面对输出进行判断
std::ostream_iterator<int, char> out_iter(std::cout," ");
// 定义一个cin迭代器
std::istream_iterator<int, char> cin_iter(std::cin);
// #1
// 输出数组a,没有变化,所以输出:1 2 3
std::copy(a, a+3, out_iter); //#1
// 加一个换行;
std::cout << std::endl;
// #2
// 将输入的数存储到a[1],即第二个元素
a[1] = *cin_iter; //#2
// #3
// 输出当前数组a,改变了第二个元素的值:
// 当输入123456的时候,输出结果为:1 123456 3
// 第二个元素变化:2->123456
std::copy(a, a+3, out_iter); //#3
return 0;
}
所以,以上程序结果如下:
123456
1 2 3
1 123456 3
现在对照你的程序,去掉回车和换行,结果是:
123456
12311234563 #这就是你的结果
#对照看下: 1 2 3 1 123456 3
C++的很多用例可以上网搜,给你个网站
http://www.cplusplus.com/reference/iterator/istream_iterator/
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询