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