zoukankan      html  css  js  c++  java
  • STL中各种容器效率

    转自:http://cpluser.bokee.com/4105719.html

    1.vector(动态数组)

    vector支持随机存取。
    vector在末端增加或删除元素时性能相当好,在前端或中部做以上操作则效率比较低,因为操作点以后的所有元素都需要移动到另外一个位置。因此,当要插入多个元素时,调用一次比调用多次效率快。
    vector高效的原因在于配置了比其所容纳的元素更多的内存。内存重新配置会花很多时间。请关注capacity()成员函数。

    2.deque(动态数组)

    deque支持随机存取。
    在deque的首端和末端插入和删除元素比较快,在中部插入和删除则比较慢。
    deque的内存重分配性能比vector好。


    3.list(双向链表)

    list不支持随机存取。
    list在任何位置安插和删除元素速度都比较快(双向链表)。
    list的安插和删除操作不会使其他元素的各个pointer,reference,iterator失效。

    4.set和multiset(平衡二叉树)

    两者不支持直接存取元素的操作,因为是自动排序。
    查找元素速度比较快。
    不能直接改变元素值,否则会打乱原本正确的顺序。必须先下删除旧元素,再插入新的元素。

    5.map和multimap(平衡二叉树)

    基本同set。
    根据已知的key查找元素速度比较快,根据value则比较慢。

  • 相关阅读:
    redis存储session配制方法
    thanks使用注意事项;
    mongodb sort limit和skip用法
    mongoose的用法(注:连接数据库)
    mongoose查询特定时间段文档的方法
    webworker的使用案例
    js 传参数
    redis.config翻译
    Oracle keep详解
    自学之笔记总结
  • 原文地址:https://www.cnblogs.com/Athrob/p/2842073.html
Copyright © 2011-2022 走看看