deque, list及其API
- deque: 双端队列容器。底层数据结构:动态开辟的二维数组,一维数组是指针数组,长度从 2 开始,以 2 倍的方式进行扩容,每次扩容后,原来第二维的数组,从新的第一维数组的下标 oldsize/2 开始存放,上下都预留相同的空行,方便支持 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 一定要考虑迭代器失效的问题)
标签:38deque,insert,mylist,删除,deq,元素,list,API,20
From: https://www.cnblogs.com/sio2zyh/p/18052776