首页 > 解决方案 > istream_iterator( istream_type& stream ) 如果初始化两次则指向不同的值

问题描述

#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) 初始化迭代器,将流的地址存储在数据成员中,并从输入流中执行第一次读取以初始化缓存值数据成员。

标签: c++

解决方案


推荐阅读