额外的迭代器

除了为每个容器定义的迭代器外,标准库在头文件iterator中还定义了额外几种迭代器:

插入迭代器:

插入器是一种迭代器适配器,它接受一个容器,生成一个迭代器,能实现向给定容器添加元素。

插入器有三种类型,差异在于元素插入的位置:

* back_inserter创建一个使用push_back的迭代器。

* front_inserter创建一个使用push_front的迭代器。

* inserter创建一个使用insert的迭代器。此函数接受第二个参数,这个参数必须是一个指向给定容器的迭代器。元素将被插入到给定迭代器所表示的元素之前。

iostream 迭代器:

虽然iostream类型不是容器,但标准库定义了可以用于这些IO类型对象的迭代器。istream_iterator读取输入流,ostream_iterator向一个输出流写数据。这些迭代器将它们对应的流当作一个特定类型的元素序列来处理。通过使用流迭代器,可以使用泛型算法从流对象读取数据以及向其写入数据。

cpp 复制代码
istream_iterator<int> in_iter(cin), eof;  //从cin读取int
//eof被定义为空的istream_iterator,因此可以当作尾后迭代器来使用。对于一个绑定到流的迭代器,一旦其
//关联的流遇到文件尾或遇到IO错误,迭代器的值就与尾后迭代器相等。
vector<int> vec(in_iter,eof);  //从迭代器范围构造vec
cpp 复制代码
ostream_iterator<int> out_iter(cout," ");
for(auto e:vec)
    *out_iter++ = e;  //赋值语句实际上将元素写到cout
cout<<endl;
//  此程序将vec中的每个元素写到cout,每个元素后加一个空格

反向迭代器:

反向迭代器就是在容器中从尾元素向首元素反向移动的迭代器。

相关推荐
vortex57 分钟前
解决 VSCode 中 C/C++ 编码乱码问题的两种方法
c语言·c++·vscode
醉颜凉2 小时前
【NOIP提高组】潜伏者
java·c语言·开发语言·c++·算法
hunandede2 小时前
FFmpeg 4.3 音视频-多路H265监控录放C++开发十三.2:avpacket中包含多个 NALU如何解析头部分析
c++·ffmpeg·音视频
爱学习的大牛1232 小时前
通过vmware虚拟机安装和调试编译好的 ReactOS
c++·windows内核
tumu_C4 小时前
C++模板特化实战:在使用开源库boost::geometry::index::rtree时,用特化来让其支持自己的数据类型
c++·开源
杜若南星4 小时前
保研考研机试攻略(满分篇):第二章——满分之路上(1)
数据结构·c++·经验分享·笔记·考研·算法·贪心算法
Neophyte06084 小时前
C++算法练习-day40——617.合并二叉树
开发语言·c++·算法
云空4 小时前
《InsCode AI IDE:编程新时代的引领者》
java·javascript·c++·ide·人工智能·python·php
写bug的小屁孩4 小时前
websocket初始化
服务器·开发语言·网络·c++·websocket·网络协议·qt creator
湖南罗泽南5 小时前
Windows C++ TCP/IP 两台电脑上互相传输字符串数据
c++·windows·tcp/ip