zoukankan      html  css  js  c++  java
  • stl 序列容器

    vector:

      数据结构:线性连续空间

      特点:动态扩容机制,及其能支持随机访问的迭代器。通过判断finish是否等于end_of_storage 来判断备用空间是否充足,进而决定是否进行扩容。所谓动态扩容,不是在原空间之后扩容,而是以原空间两倍另外配置空间,然后将原内容拷贝过去,并释放原空间。也是因为这样,所以原先空间的迭代器就会全部失效。并且这样扩容效率很低,每次都要进行拷贝。

      函数:pop_back erase clear insert push_back...

    list:

      数据结构:环形双向链表

      特点:每次插入或删除元素就会配置或释放一个元素空间,所以list节省空间,插入删除永远是常数时间。因为这种空间分配机制,所以每次操作list的元素都不会造成迭代器失效,除非是你操作的那个元素。

    其迭代器的内部有一个指向list节点的指针。因为list为环形双向链表,固只需一个指针便可遍历全部元素。并且,如果在尾端设置一个空白节点,便可以当作单链表使用(前闭后开)。对于list来说,头尾插入的效率高。

      函数:push_front push_back remove insert unique pop_front pop_back sort reverse splice

    deque:

      数据结构:双向连续线性空间.(存的时缓存区的指针)

      特点: 区别于vector,deque没有容量大小,随时可以增加新的空间结合起来,并且时双向扩容,没有空间保留功能。但是因为这样的结构设计导致迭代器的实现很复杂。其缓冲区的迭代器有四个,指向头,尾,当前位置,和node。如果要进行迭代器的访问,要考虑到迭代器是否处于当前缓冲区的边界,涉及到跳跃缓存区的问题。这里还涉及到空间分配的很多细节,都在书里,就不细说。对于deque的迭代器移动很多重要的实现,比如判断当前位置前端后端的个数,选择方向进行移动,或析构等等...

      函数:pop_back pop_front clear insert erase...

    stack:

      数据结构:deque ;  stack是adapter

      特点:无迭代器,不支持随机访问,

    queue:

      数据结构 list; adapter

      特点:无迭代器,不支持随机访问。

  • 相关阅读:
    eclipse 设置默认编码为Utf-8
    重新打开Eclipse出现“An internal error has occurred. java.lang.NullPointerException”
    Eclipse启动时出现错误 An internal error occurred during: "Updating indexes"
    eclipse卸载自带maven
    JAVA实现SFTP实例
    springboot-24-restTemplate的使用
    Jmeter在restful风格接口测试中的应用
    Swagger介绍-一套流行的API框架
    SQL 里ESCAPE的用法
    CALL 'SYSTEM' ID 'COMMAND'
  • 原文地址:https://www.cnblogs.com/BillowJ/p/12796827.html
Copyright © 2011-2022 走看看