c++ stl中堆操作如何删除元素。

RT,我建立了一个vector,调用make_heap(vector.begin(),vector.end()),我现在想删掉一些heap里面的元素(不是第一个是中间的)... RT,我建立了一个vector,调用make_heap(vector.begin(),vector.end()),我现在想删掉一些heap里面的元素(不是第一个是中间的)并且保持堆的特性。怎么做?(不能重建堆 ) 展开
 我来答
beddy1
2012-10-30 · TA获得超过1989个赞
知道大有可为答主
回答量:2271
采纳率:0%
帮助的人:2204万
展开全部
只能重建堆。堆的特性就是这样,只能在堆顶操作。
如果你真的需要时常在中间删掉元素,你根本不应该选择使用堆。
追问
如果只是修改里面的值呢?(那个值是建堆时用来比较的)我觉得我们可能经常会遇到这样的情况,快速的找到一组数中最大(最小)的值。我需要一个动态的堆。
追答
如果只是为了找最大最小值,用不着堆。直接放到Vector中,排好序就行了。要改某个值时,改完后重新选择它合适的位置。
如果堆的特性对你来说是一种负担,你就不应选择使用。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
斯啦丝拉
2012-10-30 · TA获得超过250个赞
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:291万
展开全部
如果你想频繁增删随机元素,同时保证算法复杂度的话,不应该使用vector,更不应该使用heap
如用增删随机元素,使用set或者multiset。
如果只增删头尾元素,使用deque
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿四哥vlog
2021-02-10 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:607
采纳率:0%
帮助的人:28.1万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式