deque容器(發音類似"deck"),
一種動態陣列,允許通過隨機訪問迭代器直接訪問單個元素,可以根據需要動態的伸縮。
deque與vector相似,但deque在頭部和尾部進行資料插入和刪除操作更加高效。
vector與deque相似,但內部的實現原理不同:vector使用了動態陣列,該陣列通常需要動態增長;deque中的元素在不同的緩衝區中,在deque中儲存了一些必要的資訊(位址)。
除了頻繁在頭部或尾部進行插入和刪除的操作外,deque容器的效率不高。
內部工作原理:
deque內部有個中控器,維護每段緩衝區中的內容,緩衝區中存放真實資料
中控器維護的是每個緩衝區的位址,使得使用deque時像一片連續的記憶體空間
**:
#include
using
namespace std;
#include
void
printdeque
(const deque<
int>
& d)
cout << endl;
}int
main()
printdeque
(d1);
deque<
int>
d2(d1.
begin()
,d1.
end())
;printdeque
(d2)
; deque<
int>d3(
10,100)
;printdeque
(d3)
; deque<
int>d4 = d3;
printdeque
(d4)
;return0;
}
**:
#include
using
namespace std;
#include
void
printdeque
(const deque<
int>
& d)
cout << endl;
}//賦值操作
intmain()
printdeque
(d1)
; deque<
int>d2;
d2 = d1;
//過載等號,直接賦值
printdeque
(d2)
; deque<
int>d3;
d3.assign
(d1.
begin()
, d1.
end())
;//將[beg, end)區間中的資料拷貝賦值給本身。
printdeque
(d3)
; deque<
int>d4;
d4.assign(10
,100);
//將n個elem拷貝賦值給本身。
printdeque
(d4)
;}
**:
#include
using
namespace std;
#include
void
printdeque
(const deque<
int>
& d)
cout << endl;
}//大小操作
intmain()
printdeque
(d1)
;//判斷容器是否為空
if(d1.
empty()
)else
//重新指定大小
d1.resize(15
,1);
printdeque
(d1)
; d1.
resize(5
);printdeque
(d1)
;return0;
}
**:
#include
using
namespace std;
#include
void
printdeque
(const deque<
int>
& d)
cout << endl;
}//資料訪問
intmain()
cout << endl;
//at()
for(
int i =
0; i < d.
size()
; i++
) cout << endl;
//front
cout <<
"front:"
<< d.
front()
<< endl;
//back
cout <<
"back:"
<< d.
back()
<< endl;
}
兩端插入操作:
指定位置操作:
**:
#include
using
namespace std;
#include
void
printdeque
(const deque<
int>
& d)
cout << endl;
}//兩端操作
void
test01()
//插入
void
test02()
//刪除
void
test03()
intmain()
注意:插入和刪除提供的位置是迭代器!
利用演算法實現對deque容器進行排序
**就不展示了,但是在這裡需要說明的一點是:
deque中排序操作的效率是非常低的,因為deque中的元素在底層的實現上是不連續的。可以考慮將deque中的元素拷貝到乙個vector中,然後排序之後,再將元素拷貝回來。
C deque容器的用法詳解
deque 雙端佇列 是由一段一段的定量連續空間構成,可以向兩端發展,因此不論在尾部或頭部安插元素都十分迅速。在中間部分安插元素則比較費時,因為必須移動其它元素。deque容器的建構函式 deque和vector的區別 deque對於頭部的插入和刪除效率低,資料量越大,效率越低 deque相對而言,...
收藏向 C Deque容器基礎知識解析
deque賦值操作 deque大小操作 deque插入和刪除 deque資料訪問 deque排序 功能 deque與vector區別 deque內部工作原理 deque deqt 預設構造形式 deque beg,end 建構函式將 beg,end 區間中的元素拷貝給本身。deque n,elem ...
C deque 佇列) 的使用
序列 動態陣列 allocator aware 序列容器的元素按嚴格線性排列,可按順序訪問它們的位置 動態陣列允許直接訪問其任何元素,可快速在序列首尾相對快速進行元素新增 刪除 容器通過 allocator 物件動態處理儲存需求 public member function begin 將迭代器返回...