标签:功能 stack 删除元素 deque remove 等等 时间 删除 操作
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
特点:无迭代器,不支持随机访问。
标签:功能 stack 删除元素 deque remove 等等 时间 删除 操作
原文地址:https://www.cnblogs.com/BillowJ/p/12796827.html