【STL】插入型迭代器(Insert Iterator)或插入器(inserter) (我就想自己看看)
来源:互联网 发布:网络机房维护标准 编辑:程序博客网 时间:2024/06/08 13:38
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()函数.
适用:所有STL容器
插入型迭代器(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()函数.
适用:所有STL容器
4. 例子
- #include <iostream>
- #include <vector>
- #include <list>
- #include <iterator>
- using namespace std;
- template<typename T>
- void PrintElements(T c)
- {
- T::const_iterator itr = c.begin();
- while(itr != c.end())
- cout << *itr++ <<" ";
- }
- int main()
- {
- vector<int> vecSrc;
- list<int> vecDest;
- for(vector<int>::size_type i = 0; i < 3; ++i)
- vecSrc.push_back(i);
- // 1. 类back_insert_iterator与函数back_inserter
- // explicit back_insert_iterator(Container& _Cont);
- // template<class Container> back_insert_iterator<Container> back_inserter(Container& _Cont);
- copy(vecSrc.begin(), vecSrc.end(), back_insert_iterator<list<int> >(vecDest));
- // copy(vecSrc.begin(), vecSrc.end(), back_inserter(vecDest)); // 效果一样
- PrintElements(vecDest);
- cout << endl;
- // 2. 类front_insert_iterator与函数front_inserter
- // explicit front_insert_iterator(Container& _Cont);
- // template<class Container> front_insert_iterator<Container> front_inserter(Container& _Cont);
- copy(vecSrc.begin(), vecSrc.end(), front_insert_iterator<list<int> >(vecDest));
- // copy(vecSrc.begin(), vecSrc.end(), front_inserter(vecDest));
- PrintElements(vecDest);
- cout << endl;
- // 3. 类insert_iterator与函数inserter
- // insert_iterator(Container& _Cont, typename Container::iterator _It);
- // template<class Container> insert_iterator<Container> inserter(Container& _Cont, typename Container::iterator _Where);
- copy(vecSrc.begin(), vecSrc.end(), insert_iterator<list<int> >(vecDest, ++vecDest.begin()));
- // copy(vecSrc.begin(), vecSrc.end(), inserter(vecDest, ++vecDest.begin()));
- PrintElements(vecDest);
运行结果:
- 0 1 2
- 2 1 0 0 1 2
- 2 0 1 2 1 0 0 1 2 请按任意键继续.
1 0
- 【STL】插入型迭代器(Insert Iterator)或插入器(inserter) (我就想自己看看)
- 【STL】插入型迭代器(Insert Iterator)或插入器(inserter)
- 【STL】插入型迭代器(Insert Iterator)或插入器(inserter)
- STL之--插入迭代器(back_inserter,inserter,front_inserter的区别)
- STL之--插入迭代器(back_inserter,inserter,front_inserter的区别)
- 插入迭代器 back_inserter、front_inserter、inserter
- 我就自己看看1
- 我就自己看看2
- 我就自己看看3
- 插入(insert)
- 插入排序 (Insert Sort)
- pivoting insert(旋转插入)
- 插入排序(insert sort)
- pivoting insert(旋转插入)
- 插入排序(insert sort)
- 插入排序(Insert Sort)
- 插入排序(Insert-Sort)
- MySql_插入记录时,存在就更新(或不做任何动作),不存在就添加
- 测试人员与开发人员沟通的"五要与四不要"
- 4.18
- 小程序员的苦难之旅有感(1)
- 笔记-Android5.0转场动画学习
- React 15.5带来重大修改
- 【STL】插入型迭代器(Insert Iterator)或插入器(inserter) (我就想自己看看)
- maven项目和lib下的jar包并驾齐驱
- 利用基本梯度下降法和牛顿法对样本进行判别
- 14
- redis主从复制
- js table输出
- 高级需求分析师眼中的角色复杂性估算(UAW)
- SpringMVC前端控制器三种配置方式
- binary-tree-maximum-path-sum