一.基礎概念
? ? ? ? deque和vector一樣都是對元素的操作,不同點:vector對元素增刪后元素會往前或往后移,如果數據不大沒有太多影響,如果數據很大效率會變低;deque對元素增刪不會使元素位置改變,所有效率會變高。
二.基本用法
1.deque對象創建
1. 默認構造函數 | deque<int> d1; |
2. 初始化列表 | deque<int> d2_1({ 9,8,8,6, 5 }); deque<int> d2_2 = { 1,8,8,8, 5 }; |
3. 迭代器 | deque<int> d3(d2_1.begin()+1, d2_1.end()-1); |
4. 全0初始化 | deque<int> d4(10); |
5. deque<int> 變量名(a,b) ? 代表申請a個元素空間,每個元素的值初始化b | deque<int> d5(8, 6); |
?6. 拷貝構造函數 | deque<int> d6(d5); |
2.deque賦值操作
deque<int> d = { 9,8,5,2,1,1 }; | |
?1. = 賦值 | deque<int> d1; d1 = d; |
2. assign(迭代器) | deque<int> d2; d2.assign(d1.begin()+1, d1.end()); |
3. 初始化列表 | deque<int> d3; d3.assign({ 1,2,3,5,6,7 }); |
4. 初始化 a 個 b | deque<int> d4; d4.assign(8, 6); |
3.deque大小操作
1.empty,判斷是否為空,如果是空返回1,不為空返回0 | deque<int> d; d.empty() |
2.size,元素個數 | d.size() |
3.resize,擴容處理 | d.resize(18);//擴容到18個 d.resize(20, 6);//擴容到20個,多余全部變成6 |
4.deque數據插入
1、push_front | d.push_front(-1); |
2、push_back | d.push_back(1); |
3、insert | d.insert(d.begin() + 3, 0);//第3個位置插0 d.insert(d.end() - 1, 5, 8);//在倒數第二個位置插5個8 d.insert(d.begin() + 1, d.begin() + 4, d.begin() + 6);//在第二個位置插入4-6位置元素 |
5.deque數據刪除
1、pop_front | d.pop_front(); |
2、pop_back | d.pop_back(); |
3、erase | ?d.erase(d.begin() + 2)//刪除第2個元素 d.erase(d.begin() + 1, d.begin() + 3);//刪除2-3元素 |
4.clear,全部刪除 | d.clear(); |
6.deque數據訪問
d[2]? | 和數組訪問一樣 |
d.at(2) | 和數組訪問一樣 |
d.front() | |
d.back() |