代码之家  ›  专栏  ›  技术社区  ›  Rick Jim DeLaHunt

如果初始化两次,istream\u迭代器(istream\u type&stream)指向不同的值

c++
  •  1
  • Rick Jim DeLaHunt  · 技术社区  · 7 年前
    #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 回复  |  直到 7 年前