如果初始化两次,istream_iterator(istream_type&stream)指向不同的值

时间:2018-07-04 03:41:48

标签: c++

#include <iostream>
#include <sstream>
#include <iterator>
#include <vector>
using namespace std;
int main(int args, char *argv[])
{
    vector<int> vec = { 123, 456, 789 };
    auto i1 = vec.begin();  //123
    auto i2 = vec.begin();  //123
    cout << *i1 << endl << *i2 << endl;
    istringstream istr("123 456 789");
    istream_iterator<int> i3(istr);  //123
    istream_iterator<int> i4(istr);  //456
    cout << *i3 << endl << *i4 << endl;
    return 0;
}

i4的结果超出了我的期望(我是说我一直在认为它肯定应该像普通的容器迭代器一样工作)。这是如何运作的?我只是从cppreference

获得的
  

2)初始化迭代器,将流的地址存储在数据成员中,并从输入流中进行第一次读取以初始化缓存的值数据成员。

0 个答案:

没有答案