38deque, list及其API

deque, list及其API

  • deque: 双端队列容器。底层数据结构:动态开辟的二维数组,一维数组是指针数组,长度从 2 开始,以 2 倍的方式进行扩容,每次扩容后,原来第二维的数组,从新的第一维数组的下标 oldsize/2 开始存放,上下都预留相同的空行,方便支持 deque 的首尾元素添加。

deque

deque<int> deq;

// 增加
deq.push_back(20); // 从末尾添加  O(1)
deq.push_front(20); // 从首部添加元素  O(1)
deq.insert(it, 20); // it 指向的位置添加元素  O(n)

// 删除
deq.pop_back(); // 从末尾删除元素  O(1)
deq.pop_front(); // 从首部删除元素  O(1)
deq.erase(it); // 从 it 指向的位置删除元素  O(n)

//查询搜索
// iterator(连续的 insert 和 erase 一定要考虑迭代器失效的问题)
  • list: 链表容器。
list<int> mylist;

// 增加
mylist.push_back(20); // 从末尾添加  O(1)
mylist.push_front(20); // 从首部添加元素  O(1)
// 链表中进行 insert 的时候,先要进行一个 query 查询操作,对于链表来说,查询操作效率就比较慢了
mylist.insert(it, 20); // it 指向的位置添加元素  O(1)

// 删除
mylist.pop_back(); // 从末尾删除元素  O(1)
mylist.pop_front(); // 从首部删除元素  O(1)
mylist.erase(it); // 从 it 指向的位置删除元素  O(1)

//查询搜索
// iterator(连续的 insert 和 erase 一定要考虑迭代器失效的问题)
posted @ 2024-03-04 21:38  SIo_2  阅读(21)  评论(0)    收藏  举报