STL 之duque 与list

 

  • deque 双端队列(另一篇博客实现过 https://www.cnblogs.com/lc-bk/p/11641498.html)动态开辟的二维数组,一维数组从2开始以2倍扩容连续,每次扩容后,原来二维的数组,从oldszie/2 开始存放,上下都预留空行,方便首位增加,二维数组之间不连续。

增加

  1. deq.push_back(val)    O(1)    从末尾添加
  2. deq.push_front(val)    O(1)    从头部添加
  3. deq.insert(val)           O(n)    迭代器指向的位置添加

删除

  1. deq.pop_back()         O(1)  从尾部删除
  2. deq.pop_front()         O(1)  从头部删除
  3. deq.erase(it)             O(n)  从迭代器的指向的位置删除

查找 

      iterotar        迭代器查询 (注意插入删除时的迭代器的失效问题)

  • list双向链表  

增加 

  1. list.push_back(val)       O(1)  尾部节点插入
  2. list.push_front(val)       O(1)  头节点插入
  3. list.instert(it)               O(1)  迭代器指向的位置添加  (会存在一个查询操作,链表的查询操作是O(n))

删除

  1. list.pop_back()            O(1)   尾部删除
  2. list.pop_front()            O(1)   头部删除
  3. list.erase(it)                O(1)   删除迭代器指向的位置

查找 

    iteratar    遍历

 

posted @ 2020-08-31 17:21  睡觉lc  阅读(200)  评论(0)    收藏  举报