博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C ++ 插入迭代器
阅读量:4581 次
发布时间:2019-06-09

本文共 1590 字,大约阅读时间需要 5 分钟。

 C++ 语言提供了三种插入器,其差别在于插入元素的位置不同。

(1)back_inserter,创建一个使用push_back 实现插入的迭代器。

(2)front_inserter,创建一个使用push_front实现的插入迭代器。

(3)inserter,使用insert实现的插入,此外还带有第二个实参:指向插入起始位置的迭代器。

 

  back_inserter 是一种迭代器适配器,它与容器适配器一样,是以一个容器对象作为实参,生成一个适应期实参行为的迭代器。举例说明其用法。

1 vector
vec; // empty vector 2 fill_n(back_inserter(vec),10,0); // appends 10 elements to vec

back_inserter 生成一个绑定在 vector 容器上的插入迭代器。在试图通过这个迭代器给元素赋值时,赋值运算将调用push_back 在容器中添加一个具有指定值的元素。

 算法中的copy 函数。copy函数带有三个迭代器参数,头两个指定输入范围,第三个则指向目标序列的一个元素。例如:

1 vector
vec;//empty vector2 // copy elements from ilst into ivec3 copy(ilst.begin(),ilst.end(),back_inserter(vec) );

copy 从输入范围中读取元素,然后将它们赋值给目标vec

replace 与replace_copy 算法:replace 算法有四个实参:一对指定输入范围的迭代器和两个值,后两个值是第一个值的元素替换成第二个。

                                             replace_copy  算法不改变原来序列的元素,它有五个实参,第三个迭代器实参,指定保存调整后序列的保存位置。

replace(ilst.begin(),ilst.end(),5,4);//replace any element with value of 5 by 4//creat empty vector to hold the replacement vector
ivec;replace_copy(ilst.begin(),ilst.end(),back_inserter(ivec),5,4);

front_inserter  同 back_inserter 类似,该函数创建一个迭代器,调用它所关联的容器的push_front 成员函数代替赋值运算。

注:当front_inserter 的关联容器 提供push_front 操作时才能使用front_inserter。在vetor 容器使用会出现错误。

inserter   函数带有两个实参:所关联的容器和指示插入起始位置的迭代器。

vector
::iterator it = ivc.begin();replace_copy(ilst.begin(),ilst.end(),inserter(ivec,it),5,4);

在创建 inserter 时,应指明新元素在何处插入。inserter 函数总是 在它的迭代器实参所标明的位置前面插入新元素。

 

小结:三种插入迭代器的区别:在插入的位置不同。

back_inserter 使用push_back 实现在容器末端插入, front_inserter 使用push_front 实现在容器前端插入, inserter 使用insert 实现插入,它还带有第二个实参,指向插入起始位置的迭代器。

转载于:https://www.cnblogs.com/yangyangxin/p/5823804.html

你可能感兴趣的文章
Android Editext监听光标位置
查看>>
HDU 5652 二分加搜索 http://acm.split.hdu.edu.cn/showproblem.php?pid=5652
查看>>
用CMake编译lua
查看>>
【转】谷歌三大核心技术(二)Google MapReduce中文版
查看>>
java1.8 lambda进行并行运算
查看>>
http://127.0.0.1/loginapi/JsonPacket/example/loginrequestdemo.php
查看>>
ligerUI调用$.ligerDialog.open弹出窗口关闭
查看>>
SpringMVC @RequestBody接收Json对象字符串
查看>>
MVC之LayOut布局页
查看>>
Android之Vibrator手机震动实例
查看>>
oracle6
查看>>
关于Java的对象equals方法
查看>>
关于AngularJS中$http跨域 与 nodejs接收跨域请求(使用express-session,body-parser)的设置...
查看>>
二叉树的遍历 - 数据结构和算法46
查看>>
深入围观MaskEdit组件
查看>>
基于Redis的CAS服务端集群
查看>>
[转]退出线程的几种方法
查看>>
身份证号码验证
查看>>
多协议 protocol
查看>>
CGI——(通用网关接口)
查看>>