c++的stl中ostream_iterator迭代器是怎么判定的?

#include<iostream>
#include<algorithm>
#include<vector>
#include<iterator>
using namespace std;
int main()
{
istream_iterator<int> My_cin(cin);
istream_iterator<int> My_end;
ostream_iterator<int>oscopy(cout, "\n");//问题,这里默认设定cin流的第一个元素,是怎么回事?
vector<int>vecint(My_cin, My_end);//比如说输入4 5 6 ctrl+z 然后显示的是4,就是上面的问题
while(My_cin != My_end)
{
*oscopy++ = * My_cin++;
}//还有就是对于流的迭代器,一旦赋值完成就显示,有什么条件约束吗?
system("pause");
return 0;
}
这个ostream_iterator是怎么判定的,是第一次操作才有效吗?

//我手上没有环境,应该可以运行的
#include <iostream>
#include <numeric>
#include <vector>
#include <iterator>
using std::cout;
using std::cin;
using std::endl;
using std::vector;
using std::istream_iterator;
using std::ostream_iterator;
using std::back_inserter;
using std::accumulate;


int main()
{
    vector<int> numbers;
    cout << "Enter a series of integers separated by spaces" 
        << " followed by Ctrl+Z or a letter:" << endl;

    istream_iterator<int> input(cin), input_end;
    ostream_iterator<int> out(cout, " ");

    copy(input, input_end, back_inserter<vector<int>>(numbers));

    cout << "You entered the following values:" << endl;
    copy(numbers.begin(), numbers.end(), out);

    cout << endl << "The sum of these values is " 
        << accumulate(numbers.begin(), numbers.end(), 0) << endl;

    return 0;
}
温馨提示:答案为网友推荐,仅供参考
相似回答