从erase()谈起
面试中,因为我说自己熟悉C++,就问我一个问题,Vector<int>里, 想把元素为2的节点删除掉。该怎么做。
我已经很久没有用Vector了,但是只有硬着头皮想一下,第一个想起的是remove能删除节点,但是不是真正的删除,还需要erase.
但是因为Vector是顺序存储的数据结构,我觉得,一个节点删除掉后,会产生数据结构重新整合,会把这个节点挨个复制到前一个节点上。
这样我提出两个方案,一个,使用反向迭代器,从后面向前面遍历,遍历判定条件后将节点删除。第二个,或者使用pop_back,从后面pop出元素,如果是符合条件的,就丢弃掉,剩余的放到一个先进后出容器里,
然后再把这个容器转换成Vector.
答案是,Vector的迭代器,不支持删除的erase使用反向迭代器,但是对于失效,只要下一次执行,使用erase返回的迭代器进行使用就可以了。
我的方法反映了我对数据结构有一定的认识,也比较符合Vector的实际情况,但是对Vector不够熟练,尤其是代码,对stl特定的解决方法,并不够熟悉。
因为是面试,点到为止了。哎,技艺不够精啊。有空我看看stl的源代码分析分析。
从erase()谈起的更多相关文章
- 从决策树学习谈到贝叶斯分类算法、EM、HMM  --别人的,拷来看看
		
从决策树学习谈到贝叶斯分类算法.EM.HMM 引言 最近在面试中,除了基础 & 算法 & 项目之外,经常被问到或被要求介绍和描述下自己所知道的几种分类或聚类算法(当然,这完全 ...
 - QWidget的六个刷新函数(居然有QWidget::erase函数,且并不产生绘制事件)
		
Qt paintevent事件 一.主要理解一下几个方法和属性: 1.QWidget * QScrollView::viewport () const 2.void QWidget::paintE ...
 - 从决策树学习谈到贝叶斯分类算法、EM、HMM
		
从决策树学习谈到贝叶斯分类算法.EM.HMM (Machine Learning & Recommend Search交流新群:172114338) 引言 log ...
 - 浅谈Windows环境下DOS及MS-DOS以及常见一些命令的介绍
		
浅谈Windows环境下DOS及MS-DOS以及常见一些命令的介绍 前记 自己是搞编程的,首先我是一个菜鸟,接触计算机这么久了,感觉很多计算机方面的技术和知识朦朦胧胧.模模糊糊,貌似有些贻笑大方了:所 ...
 - [转]谈NAND Flash的底层结构和解析
		
这里我想以一个纯玩家的角度来谈谈关于NAND Flash的底层结构和解析,可能会有错误的地方,如果有这方面专家强烈欢迎指正. NAND Flash作为一种比较实用的固态硬盘存储介质,有自己的一些物理特 ...
 - 浅谈 cxx rope
		
一般说的浅谈是永远不会短的 然后$qwq$本宝宝并不想讲实现原理 会用就行了呗 然后方便起见,本文规定数组$a$的第$1$位为$a[0]$ 并且本文的所有$debug$为了方便看到我们$rope$长度 ...
 - 虚拟化构建二分图(BZOJ2080 题解+浅谈几道双栈排序思想的题)
		
虚拟化构建二分图 ------BZOJ2080 题解+浅谈几道双栈排序思想的题 本题的题解在最下面↓↓↓ 不得不说,第一次接触类似于双栈排序的这种题,是在BZOJ的五月月赛上. [BZOJ4881][ ...
 - 浅谈 Vector
		
目录 浅谈Vector 1.容器基本操作 2.vector 初始化 3.vector的赋值与swap 4.vector的增删改除 1.增加元素 2.访问元素 3.删除元素 4.元素的大小 浅谈Vect ...
 - Qt3升至Qt4需要注意的几件事项浅谈
		
Qt3升至Qt4需要注意的几件事项浅谈 公司以前的项目是用Qt3写的,随着时间的推移慢慢显示出Qt3有多方面的限制,因此先公司决定用Qt4来改写这个项目,并为软件添加新功能,在此背景先编写此文章. 先 ...
 
随机推荐
- easyui editor combobox multiple
			
$.extend($.fn.datagrid.defaults.editors,{ combobox: { init: function(container, options){ var combo ...
 - 复习练习(03)jquery Css方法一步步升级
			
jquery Css方法一步步升级 <script src="jquery-1.8.3.js"></script> <script type=&quo ...
 - [四校联考P3]  区间颜色众数 (主席树)
			
主席树 Description 给定一个长度为 N 颜色序列A,有M个询问:每次询问一个区间里是否有一种颜色的数量超过了区间的一半,并指出是哪种颜色. Input 输入文件第一行有两个整数:N和C 输 ...
 - Bootstrap_警示框
			
一.默认警示框 Bootstrap框架通过“alert“样式来实现警示框效果.在默认情况之下,提供了四种不同的警示框效果: 1.成功警示框:告诉用用户操作成功,在“alert”样式基础上追加“aler ...
 - macaca运行报错之chrome-driver问题处理,关闭 Chrome 的自动更新
			
由于chrome浏览器自动更新,导致 macaca运行报错,重新安装和更新chrome-driver 之后,还需要把chrome浏览器降级到50版本: 但是chrome会自动更新,所以需要禁止.找到这 ...
 - CSSOM之getComputedStyle,currentStyle,getPropertyValue,getAttribute
			
js关于CSSOM编程的样式相关几个常用的方法 webkit:getComputedStyle,getPropertyValue IE:currentStyle,getAttribute 前言 jqu ...
 - Java开发高薪之路__大纲篇
			
本人小白,现对java开发做出以下总结,内容将从初级开始,逐步完善与摸索. 基础篇 网页篇 Android篇 高级建设篇 数据篇 系统篇
 - 软件测试--测试Demo
			
视频地址(第二课时):https://pan.baidu.com/s/1gfLVC2n 软件安装好了! 软件默认的浏览器是火狐. 如果需要IE,chrome,都在前一篇的安装包里有. 测试结果 视频里 ...
 - mac下使用brew安装ffmpeg支持x265
			
使用brew install ffmpeg 安装ffmpeg默认是没有支持x265的, 使用brew info ffmpeg 获取安装选项帮助, 使用brew reinstall ffmpeg --w ...
 - spring文件下载记录
			
/** * 下载方法 * @param request * @param response * @param storeName 文件在存在位置的名字(需要带着后缀) * @param content ...