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