deque概述
deque相关操作
// deque相较于vector增加的相关操作有:push_front()和pop_front()
deque<int> deq;
// 1、添加
deq.push_back(10);
// (1)向末尾添加元素10,时间复杂度为O(1)
deq.push_front(20);
// (2)向首部添加元素20,时间复杂度为O(1)
deq.insert(it, 30);
// (3)向迭代器it处添加元素30,需要挪动元素和更新迭代器,时间复杂度为O(n)
// 2、删除
deq.pop_back();
// (1)删除末尾元素,时间复杂度为O(1)
deq.pop_front();
// (2)删除首部元素,时间复杂度为O(1)
deq.erase(it);
// (3)删除迭代器it处元素,需要挪动元素和更新迭代器,时间复杂度为O(n)
// 3、查询
// (1)使用迭代器遍历
辨析vector和deque
list概述
list相关操作
// list相较于vector增加的相关操作有:push_front()和pop_front()
list<int> mylist;
// 1、添加
mylist.push_back(10);
// (1)向末尾添加元素10,时间复杂度为O(1)
mylist.push_front(20);
// (2)向首部添加元素20,时间复杂度为O(1)
mylist.insert(it, 30);
// (3)向迭代器it处添加元素30,需要更新迭代器,时间复杂度为O(1)
// 链表进行insert前,需要进行query查询
// 对于链表来说,query查询效率低
// 2、删除
mylist.pop_back();
// (1)删除末尾元素,时间复杂度为O(1)
mylist.pop_front();
// (2)删除首部元素,时间复杂度为O(1)
mylist.erase(it);
// (3)删除迭代器it处元素,需要更新迭代器,时间复杂度为O(1)
// 3、查询
// (1)使用迭代器遍历
辨析vector和list