【C++ Primer 第10章】 10.4.1 插入迭代器
目录
• 反向迭代器
插入迭代器
插入迭代器,这些迭代器被绑定到一个容器上,可以向容器插入元素。
头文件为:#include<iterator
it=t 在it指定的当前位置插入值t。假定c是it绑定的容器,依赖于插入迭代器的不同种类,此赋值分别调用c.push_back(t)、c.push_front(t)或c.insert(t,p),其中p为传递给inserter的迭代器位置 *it,++it,it++ 这些操作虽然存在,但不会对it做任何事情。每个操作都返回it
• back_inserter 创建一个使用push_back的迭代器。
• front_inserter创建一个使用push_front的迭代器。
• inserter创建一个使用insert的迭代器。此函数接受第二个参数,这个参数必须是一个指向给定容器的迭代器。元素被插入到指定的迭代器所表示的元素之前。
【注意】只有容器支持push_back才可以使用back_inserter, 同理,只有容器支持push_front时才可以使用front_inserter
*it = val;
效果和下面的代码一样:
it = c.insert(it, val);
++it; // 递增it使它指向原来的元素
list<int> lst1 = {, , , };
list<int> lst2, lst3;
copy(lst.begin(), lst.end(), front_inserter(lst2)); //拷贝完成之后, lst2包含4 3 2 1
copy(lst.begin(), lst.end(), inserter(lst3, llst3.begin())); //拷贝完成之后, lst2包含1 2 3 4
代码:
#include<iostream>
#include<algorithm>
#include<vector>
#include<list>
#include<iterator>
using namespace std; int main()
{
vector<int> vi = { , , , , , , , , };
list<int> li1, li2, li3;
unique_copy(vi.begin(), vi.end(), inserter(li1, li1.begin()));
for (auto v : li1)
cout << v << " ";
cout << endl; unique_copy(vi.begin(), vi.end(), back_inserter(li2));
for (auto v : li2)
cout << v << " ";
cout << endl; unique_copy(vi.begin(), vi.end(), front_inserter(li3));
for (auto v : li3)
cout << v << " ";
cout << endl; return ;
输出结果:

【C++ Primer 第10章】 10.4.1 插入迭代器的更多相关文章
- JavaScript编程艺术-第10章-10.2-实用的动画
10.2-实用的动画 ***代码亲测可用*** HTML: <!DOCTYPE HTML> <html> <head> <meta charset=" ...
- JavaScript编程艺术-第10章-10.1-动画
10.1—最简单的动画 ***代码亲测可用*** 动画:让元素位置随着时间而不断地发生变化 HTML: <!DOCTYPE HTML> <html> <head> ...
- C++ Primer 第三章 标准库类型vector+迭代器iterator 运算
1.vector: 标准库类型vector表示对象的集合,其中所有对象的类型都相同,集合中的每个对象都有一个与之对应的索引,索引用于访问对象.因为vector“容纳着”其他对象,所以它也常被称作容器( ...
- 孙鑫视频学习:对第10章设置线宽时为什么不调用UpDateData(TRUE)的理解
在第10章10.2.1小节中,首先分别对视图类和对话框类添加了一个名为m_nLineWidth的int型变量,再将用户在CSetting dlg对话框的edit控件中输入的线宽值记录在dlg.m_nL ...
- 【c++ Prime 学习笔记】第10章 泛型算法
标准库未给容器添加大量功能,而是提供一组独立于容器的泛型算法 算法:它们实现了一些经典算法的公共接口 泛型:它们可用于不同类型的容器和不同类型的元素 利用这些算法可实现容器基本操作很难做到的事,例如查 ...
- C++ Primer 读书笔记:第10章 关联容器
第10章 关联容器 引: map set multimap multiset 1.pair类型 pair<string, int> anon anon.first, anon.second ...
- C++ primer plus读书笔记——第10章 对象和类
第10章 对象和类 1. 基本类型完成了三项工作: 决定数据对象需要的内存数量: 决定如何解释内存中的位: 决定可使用数据对象执行的操作或方法. 2. 不必在类声明中使用关键字private,因为这是 ...
- C++ Primer 5th 第10章 泛型算法
练习10.1:头文件algorithm中定义了一个名为count的函数,它类似find,接受一对迭代器和一个值作为参数.count返回给定值在序列中出现的次数.编写程序,读取int序列存入vector ...
- [C++ Primer Plus] 第10章、对象和类(一)程序清单——辨析三个const
程序清单10.1+10.2+10.3 头文件stock.h #ifndef STOCK00_H_ //先测试x是否被宏定义过 #define STOCK00_H_ //如果没有宏定义,就宏定义x并编译 ...
- [C++ Primer] : 第10章: 泛型算法
概述 泛型算法: 称它们为"算法", 是因为它们实现了一些经典算法的公共接口, 如搜索和排序; 称它们是"泛型的", 是因为它们可以用于不同类型的元素和多种容器 ...
随机推荐
- JavaScript中的栈和堆内存,作用域
1.栈 stack”和“堆 heap” 简单的来讲,stack上分配的内存系统自动释放,heap上分配的内存,系统不释放,哪怕程序退出,那一块内存还是在那里.stack一般是静态 ...
- Bugly实现app全量更新
转 http://blog.csdn.net/qq_33689414/article/details/54911895Bugly实现app全量更新 Bugly官网文档 一.参数配置 在app下的gra ...
- checklistboxx 多选取值 和选中
for (int i = 0; i < cklist.Items.Count; i++) { if (cklist.GetItemChecked(i)) { //修改子菜单的父节点为此菜单的id ...
- CF875F Royal Questions
传送门 似乎可以按边权排序后二分图匹配 这里给一个复杂度稳定的算法 把一个公主能匹配的两个点连边,然后依次加边,每当加到一个大小为\(n\)的连通块中有\(n\)条边之后,这时形成了基环树,将这些边定 ...
- Sqoop异常:Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject
18/12/07 01:09:03 INFO mapreduce.ImportJobBase: Beginning import of staffException in thread "m ...
- Box-Muller 与 ziggurat
1. Ziggurat 算法与 Box-muller 算法的效率比较 2. Box-Muller a. 一般形式 因函数调用较多,速度慢,当u接近0时存在数值稳定性问题 先假设. 用Box-Mulle ...
- [Shell]获取IP地址
ifconfig eth0 | grep "inet addr:" | awk '{print $2}' | cut -c 6- ifconfig eth1 | grep &quo ...
- manjaro 的配置
一.更新源的配置: 1).自动方法: 在 终端 执行下面的命令从官方的源列表中对中国源进行测速和设置 sudo pacman-mirrors -c China 2).手动方法 自动方法(上面的方法1, ...
- eclipse自动添加注释
自动添加注释 快捷键:alt shift jwindows-->preference Java-->Code Style-->Code Templates code-->new ...
- win10 安装硕正
提示权限不够,解决方法:根据提示路径手动在路径下建立文件夹