码迷,mamicode.com
首页 > 编程语言 > 详细

C++:--iterator头文件中的迭代器(插入迭代器)

时间:2020-05-30 01:19:43      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:指定   标准   输出   insert   改变   nbsp   back   int   vector   

 

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

这些迭代器包括:
插入迭代器(insert iterator):这些迭代器被绑定到一个容器上,可用来向容器插入元素
流迭代器(stream iterator):这些迭代器被绑定到输入或输出流上,可用来遍历所有关联的IO流
反向迭代器(reverse iterator):这些迭代器向后而不是向前移动。除了forward_list容器之外的标准库容器都有反向迭代器
移动迭代器(move iterator):这些专门的迭代器不是拷贝其中的元素,而是移动它们
一、插入迭代器
插入迭代器是一种迭代器适配器,它接受一个容器,生成一个迭代器,能实现向给定容器添加元素。当我们通过一个插入迭代器进行赋值时,该迭代器调用容器操作来向给定容器的指定位置插入一个元素

根据元素插入的位置不同,插入迭代器可分为:
back_inserter:创建一个使用push_back的迭代器
front_inserter:创建一个使用push_back的迭代器
inserter:创建一个使用insert的迭代器。此函数接受第二个参数,这个参数必须是一个指向给定容器的迭代器。元素将被插入到给定迭代器所表示的元素之前


一个重要的注意事项:这三个迭代器返回一个位置,可以对这些位置进行操作,但是进行解引用(*)无效,++也不会改变位置

back_inserter
该参数接受一个容器,返回一个与该容器绑定的插入迭代器,对此迭代器赋值,赋值运算符会调用push_back将元素添加到容器的尾部
例如下面我们在vector容器的尾部插入一个元素:

 

std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);

auto it = std::back_inserter(vec);
it = 3;

for (auto val : vec) {
std::cout << val << " ";
}

我们也可以在算法中运用此迭代器,下面是对fill_n()算法的使用:
参数:参数1为迭代器起始位置。参数2为要改变的元素个数。参数3为要设定的值
fill_n()参数2的注意事项:参数2不能超出容器的大小,也不能对空容器操作

 

C++:--iterator头文件中的迭代器(插入迭代器)

标签:指定   标准   输出   insert   改变   nbsp   back   int   vector   

原文地址:https://www.cnblogs.com/nddtt/p/12990278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!