You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已知迭代器时,std::set使用迭代器与值erase哪种更快?

std::set 迭代器erase与值erase的性能对比

当你已经获取到目标元素的迭代器时,使用迭代器版本的erase速度更快,原因如下:

  • 迭代器版本:void erase (iterator position)
    这个版本直接通过迭代器定位到红黑树中的目标节点,只需执行一次节点删除和红黑树结构调整操作,时间复杂度为O(1)(红黑树中通过节点指针直接删除的开销是常数级)。

  • 值版本:size_type erase (const value_type& val)
    哪怕你确定元素存在,这个版本仍然需要先在红黑树中通过值查找对应的节点,查找的时间复杂度是O(log n),之后才会执行删除操作。整体时间复杂度为O(log n),比迭代器版本多了一次查找的额外开销。

总结:既然已经拿到了目标元素的迭代器,优先用迭代器版本的erase,能省去不必要的查找耗时。

内容的提问来源于stack exchange,提问作者jslee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:56:59