对于remove函数,首先要明白remove函数的实现原理。首先remove函数在STL中的源代码如下:

template <class InputIterator, class OutputIterator, class T>
OutputIterator remove_copy ( InputIterator first, InputIterator last, OutputIterator result,const T& value ){for ( ; first != last; ++first)if (!(*first == value))
*result++ = *first;
return result; }

例如:

如果lb是一个list<int>的对象,则调用函数代码如下:

remove(lb.begin(),lb.end(),4);
remove的时候只是通过迭代器的指针向前移动来删除,将没有被删除的元素放在链表的前面,并返回一个指向新的超尾值的迭代器。由于remove()函数不是成员,因此不能调整链表的长度。remove()函数并不是真正的删除,要想真正删除元素则可以使用erase()或者resize()函数。

erase()函数可以删除给定区间的元素。它接受两个迭代器参数,这些参数规定了要删除的区间。例如:

要删除第一个元素和第二个元素,代码如下:

score.erase(scores.begin(),score.begin()+2);

其中该区间不包括最后一个元素。

对于resize()函数,resize()函数用来调整容器的大小。对于容器c,c.resize(n) 调整容器 c 的长度大小,使其能容纳 n 个元素,如果 n < c.size(),则删除多出来的元素;否则,添加采用值初始化的新元素。

下面用一段代码来说remove()函数、erase()函数和resize()函数的区别

<pre name="code" class="cpp"><pre name="code" class="cpp">#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdio>
using namespace std;
int main()
{int n;char ask;cin>>n;vector<char> V;V.reserve(n);for(int i=0;i<n;i++){char t;cin>>t;V.push_back(t);}vector<char> V2,V3;V2.assign(V.begin(),V.end());V2.assign(V.begin(),V.end());cin>>ask;vector<char>::iterator last;last=remove(V.begin(),V.end(),ask);V2.resize((remove(V2.begin(),V2.end(),ask)-V2.begin()));V3.erase(remove(V3.begin(),V3.end(),ask),V3.end());for(vector <char>::iterator iter=V.begin();iter!=V.end();iter++)cout<<*iter<<" ";cout<<endl;for(vector <char>::iterator iter=V2.begin();iter!=V2.end();iter++)cout<<*iter<<" ";cout<<endl;for(vector <char>::iterator iter=V3.begin();iter!=V3.end();iter++)cout<<*iter<<" ";cout<<endl;system("pause");return 0;
}

结果如下:

c++中remove函数相关推荐

  1. python remove函数_python中remove函数的用法是什么?

    python中remove函数的用法是什么? python中remove函数的用法: 描述 remove() 函数用于移除列表中某个值的第一个匹配项. 语法 remove()方法语法: list.re ...

  2. python中remove函数是什么意思,python中pop函数和remove函数有什么区别

    python中pop函数和remove函数有什么区别 发布时间:2020-12-10 09:36:18 来源:亿速云 阅读:80 作者:小新 小编给大家分享一下python中pop函数和remove函 ...

  3. python中remove函数的用法_Remove函数用法

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  4. C++的 remove函数

    一.介绍 remove函数原型如下: template< class ForwardIt, class T > ForwardIt remove( ForwardIt first, For ...

  5. c语言remove命令和erase,详解C++ list中erase与remove函数的使用

    C语言中的erase与remove函数一直让小编很迷糊,因为他们的功能都是一样的,本文是详解C++ list中erase与remove函数的使用方法,接下来爱站技术频道小编带你一起来了解吧! eras ...

  6. react中纯函数_如何在纯React中创建电子邮件芯片

    react中纯函数 by Andreas Remdt 由Andreas Remdt 如何在纯React中创建电子邮件芯片 (How to create email chips in pure Reac ...

  7. STL的remove函数和list的remove成员函数

    今天看书刚刚看的,就记录下来吧.这可能是老生常谈了,权且作为一个警醒的例子吧. 大家都知道STL有两个非常重要的组成部分,容器和算法. 算法就是一个个的函数,通过迭代器和容器关联在一起,完成一些工作. ...

  8. 《APUE》中的函数整理

    第1章 unix基础知识 1. char *strerror(int errnum) 该函数将errnum(就是errno值)映射为一个出错信息字符串,返回该字符串指针.声明在string.h文件中. ...

  9. linux中 probe函数的何时调用的?

    点击打开链接 linux中 probe函数何时调用的 所以的驱动教程上都说:只有设备和驱动的名字匹配,BUS就会调用驱动的probe函数,但是有时我们要看看probe函数里面到底做了什么,还有传递给p ...

最新文章

  1. 转帖 开源游戏服务器调研
  2. 《编程导论(Java)#183;1.4.1 范式》
  3. datagridview后台获取选中行的值的几种方式
  4. python 函数递归一次增加一次变量_python基础之函数、返回值,局部变量、全局变量,递归(继续补充不定长参数)...
  5. php1到12取值,零起点php入门第12课-php数组(1)
  6. iOS7 - NSURLSession
  7. zabbix详解(一)——zabbix基本概念
  8. Linux-文件目录命令
  9. Linux系统下存在大量的TIME_WAIT状态的TCP连接的解决方法
  10. html仿win10第一次开机效果,纯 HTML/CSS 高仿 Win10 加载动画
  11. 基于互联网的摄像测量系统(D 题)-- 2021 年全国大学生电子设计竞赛
  12. 百度搜索框代码,实现回车点击,跳转到新页面,简单
  13. 可以学习相关框架【转:https://testerhome.com/topics/6283】
  14. fx3u4ad一adp说明书_FX3U-4AD-ADP使用手册三菱FX3U-4AD-ADP用户手册 - 三菱
  15. SSH安全策略–指定IP登陆
  16. Python实现和弦查询器(钢琴)
  17. [Excel]如何使Vlookup由右往左找? 或使Hlookup由下往上找?
  18. HDFS高可用配置及其高可用集群搭建
  19. apache更改网站目录
  20. spring 获取容器及容器中的对象

热门文章

  1. BugFree 简介
  2. 什么是Barr-C?
  3. CAD图纸如何转换WMF图片格式?
  4. 使用MAKER进行基因注释(高级篇之AUGUSTUS模型训练)
  5. 深圳云计算培训:怎么进入云计算这个行业?
  6. Fluent Meshing中BOI设置的几个问题
  7. 网卡反复重启[why!why!why]
  8. 英译汉在线翻译器如何实现英文语音翻译中文
  9. 【脚本语言系列】关于Python音频处理WMPlayerOCX,你需要知道的事情
  10. 各种开关的教程---凯利讯半导体