• 技术文章 >后端开发 >C#.Net教程

    stl中的size的坑

    高洛峰高洛峰2016-11-22 15:12:39原创643
    去年刚进公司的时候,公司基础库里面有个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。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:stl
    上一篇:C# 如何调用 C++ DLL中的函数接口和回调函数 下一篇:C#语言FormClosing与FormClosed事件中Args参数的CloseReason枚举
    PHP编程就业班

    相关文章推荐

    • 分享一道逻辑面试题,看看你能答对吗!• C++设计模式浅识装饰模式• SUNWEN教程之----C#进阶(五)• asp.net core mvc实现文件上传实例• SUNWEN教程之----C#进阶(十一)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网