C++迭代器之’插入迭代器

1. 定义

插入型迭代器(Insert Iterator),又叫插入器(Inserter)。

2. 作用

插入迭代器的主要功能为把一个赋值操作转换为把相应的值插入容器的操作。

算法库对所有在容器上的操作有约束:决不修改容器的大小(不插入、不删除)。有了插入迭代器,既使得算法库可以通过迭代器对容器插入新的元素,又不违反这一统带,即保持了设计上的一致性。

3. 类型

3.1 尾部插入器(back_insert_iterator)

使用:通过调用容器的push_back()成员函数来插入元素

功能:在容器的尾端插入元素

限制:只有提供了push_back()成员函数的容器中

适用:vector deque list


3.2 头部插入器(front_insert_iterator)

使用:通过调用容器的push_front()成员函数来插入元素

功能:在容器的前端插入元素

限制:只有提供了push_front()成员函数的容器中

适用:deque list


3.3 普通插入器(insert_iterator)

使用:通过调用insert()成员函数来插入元素,并由用户指定插入位置

功能:在容器的指定位置插入元素

限制:STL容器都提供了insert()函数.

适用:提供了insert()函数的STL容器

例子:

1 #include <iostream>
 2 #include <vector>
 3 #include <list>
 4 #include <iterator>
 5 #include <queue>
 6 #include <set>
 7 using namespace std;
 8 
 9 int main()
10 {
11     vector<int> V;
12     list<int> L;
13 
14     for(int i = 0; i < 10; ++i)
15         V.push_back(i %5);
16 
17 
18 //back_inserter
19     copy(V.begin(), V.end(), back_inserter(L));
20 
21     list<int>:: iterator it;
22     for(it = L.begin(); it != L.end(); it++)
23     {
24         cout <<*it<<" ";
25     }
26     cout << endl;
27 
28 //    front_inserter
29     deque<int> dq;
30     copy(V.begin(), V.end(), front_inserter(dq));
31 
32     deque<int>:: iterator it1;
33     for(it1 = dq.begin(); it1 != dq.end(); it1++)
34     {
35         cout <<*it1<<" ";
36     }
37     cout << endl;
38 //     insert_iterator
39     set<int> s;
40     copy(L.begin(), L.end(), inserter(s, s.begin()));
41     set<int>::iterator it2;
42     for(it2 = s.begin(); it2 != s.end(); it2 ++)
43     {
44         cout<<*it2<<" ";
45     }
46 
47     return 0;
48 }

C++迭代器之'插入迭代器


原文链接: https://www.cnblogs.com/Jadon97/p/6884067.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/254192

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午7:40
下一篇 2023年2月14日 上午7:41

相关推荐