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则比较慢。

  • 相关阅读:
    Death Race
    中国队吃中药了?
    (zt)让我们相亲相爱一百年不动摇
    Subversion & Arfa Karim Randhawa
    要是有时间的话……
    (zt)山王
    (zt)东方红
    Oracle 备份 与 恢复 概述
    Solaris 网络 配置
    RAID 磁盘阵列 详解
  • 原文地址:https://www.cnblogs.com/Athrob/p/2842073.html
Copyright © 2011-2022 走看看