stl中的size的坑

去年刚进公司的时候,公司基础库里面有个lrucache,里面的实现用的是std::list。但是里面计算std::list的函数直接使用的是stl里面的size()方法。结果压测的时候,性能卡在这里了。
今天,有个同事又在基础库里面发现一个队列的实现,也用到了std::list,取元素的个数的时候同样用到了size()方法。
很遗憾的是,公司的基础库只暴露了头文件,无法一一去检查这个坑是否会在其他地方还会有。

下面看一下stl里面size()方法的实现:

size_type      size() const      { return std::distance(begin(), end()); }

登录后复制

上面的代码g++版本是4.2.1

显然,复杂度为O(N)。当list里面元素比较多的时候,计算将很慢。 所以,当使用std::list的时候,一定记得自己维护一个count。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2445690.html

(0)
上一篇 2025年3月3日 16:11:34
下一篇 2025年2月18日 02:06:27

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 身体凉的人是什么体质

    在日常生活中,想必很多人都有遇到身体寒凉的友友,无论夏季还是冬季,身体摸着都是冷冷的,这不近期一起关于身体凉命更长的说法引发了众议,成了大家茶余饭后讨论的焦点,小编就和大家一起看看。 身体凉的人是什么体质 身体凉的人是寒性体质。寒性体质的人…

    2025年2月19日
    561.5K00

发表回复

登录后才能评论