c++ - 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) 初始化迭代器,将流的地址存储在数据成员中,并从输入流中执行第一次读取以初始化缓存值数据成员。
解决方案
推荐阅读
- awk - 如何根据模式更改一行中字符串的顺序?
- mongodb - Tailable 游标不会阻塞空集合
- three.js - 如何在threejs / webgl中有效地直接渲染3D纹理?
- angular - Docker Nginx 和 Angular 获得欢迎页面
- ruby-on-rails - 有没有办法在请求规范中模拟 Pundit 政策授权?
- cobol - 在 Cobol 的输入行上写入输出
- php - 问题编码一个程序,该程序用另一个数字的偶数位生成一个数字,但向后
- android - 异步删除和添加实体房间。这可以引入以下问题吗?
- php - 按钮操作在 android v9+ 上无法正常工作,但在 v4-8 上有效
- amazon-web-services - 从另一个粘合作业的 codecommit 存储库执行粘合作业