zoukankan      html  css  js  c++  java
  • 存储结构比较vector,list,dequeue,stack(转)

     
     
    vector适用:对象数量变化少,简单对象,随机访问元素频繁
    list适用:对象数量变化大,对象复杂,插入和删除频繁
    最大的区别是,list是双向的,而vector是单向的。
    因此在实际使用时,如何选择这三个容器中哪一个,应根据你的需要而定,一般应遵循下面的原则:   
            1、如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector   
            2、如果你需要大量的插入和删除,而不关心随即存取,则应使用list   
            3、如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque。 
     
    vector   表示一段连续的内存区域,每个元素被顺序存储在这段内存中,对vector   的随机访问效率很高,但对非末尾元素的插入和删除则效率非常低。 在vecotor中插入或者删除某个元素,需要将现有元素进行复制,移动。如果vector中存储的对象很大,或者构造函数复杂,则在对现有元素进行拷贝时开销较大,因为拷贝对象要调用拷贝构造函数。对于简单的小对象,vector的效率优于list。vector在每次扩张容量的时候,将容量扩展2倍,这样对于小对象来说,效率是很高的。
     
    list   表示非连续的内存区域并通过一对指向首尾元素的指针双向链接起来,插入删除效率高,随机访问效率低.list中的对象是离散存储的,随机访问某个元素需要遍历list。在list中插入元素,尤其是在首尾插入元素,效率很高,只需要改变元素的指针。

    deque   
    也表示一段连续的内存区域,但与vector不同的是它支持高效地在其首部插入和删除元素,它通过两级数组结构来实现,一级表示实际的容器,第二级指向容器的首和尾 .
       

     
    计划、执行、每天高效的活着学着
  • 相关阅读:
    视频监控,硬盘录像机安装
    路由器、集线器和三层交换机有何不同
    九选六?九选三?
    Access数据转换为XML格式
    硬盘录像显示器显示画面有抖动感
    硬盘录像机开机监视一段时间后,显示器出现屏幕保护或者黑屏
    庆祝还活着
    天津之旅
    武汉之旅
    从今天起~~~
  • 原文地址:https://www.cnblogs.com/huxiaoyun90/p/3332473.html
Copyright © 2011-2022 走看看