C C 學習 25 STL之deque容器

2022-04-04 01:52:06 字數 1863 閱讀 7168

說明:vector 容器是單向開口的連續記憶體空間,deque 則是一種雙向開口的連續線性空間。所謂的雙向開口,意思是可以在頭尾兩端分別做元素的插入和刪除操作,當然,vector 容器也可以在頭尾兩端插入元素,但是在其頭部操作效率奇差,無法被接受。

注意:deque 容器的迭代器並不是普通的指標,其複雜度和 vector 不是乙個量級,這影響各個運算的層面。因此,除非有必要,我們應該盡可能的使用 vector,而不是 deque。

1.建構函式

1 dequedeq; //

預設構造形式

2 deque(beg,end); //

建構函式將[beg, end)區間中的元素拷貝給本身

3 deque(n,elem); //

建構函式將 n 個 elem 拷貝給本身

4 deque(const deque &deq); //

拷貝建構函式

2.賦值操作

1 assign(beg,end); //

將[beg, end)區間中的資料拷貝賦值給本身

2 assign(n,elem); //

將 n 個 elem 拷貝賦值給本身

3 deque& operator=(const deque &deq); //

過載等號操作符

4 swap(deq); //

將 deq 與本身的元素互換

3.大小操作

1 deque.size(); //

返回容器中元素的個數

2 deque.empty(); //

判斷容器是否為空

3deque.resize(num);4//

重新指定容器的長度為 num,若容器變長,則以預設值填充新位置;如果容器變短,則末尾超出容器長度的元素被刪除。

5deque.resize(num, elem); 6//

重新指定容器的長度為 num,若容器變長,則以 elem 值填充新位置,如果容器變短,則末尾超出容器長度的元素被刪除。

4.雙端插入和刪除操作

1 push_back(elem); //

在容器尾部新增乙個資料

2 push_front(elem); //

在容器頭部插入乙個資料

3 pop_back(); //

刪除容器最後乙個資料

4 pop_front(); //

刪除容器第乙個資料

5.訪問資料

1 at(idx);//

返回索引 idx 所指的資料,如果 idx 越界,丟擲 out_of_range

2operator;//

返回索引 idx 所指的資料,如果 idx 越界,不丟擲異常,直接出錯

3 front();//

返回第乙個資料

4 back();//

返回最後乙個資料

6.插入操作

1 insert(pos,elem);//

在 pos 位置插入乙個 elem 元素的拷貝,返回新資料的位置

2 insert(pos,n,elem);//

在 pos 位置插入 n 個 elem 資料,無返回值

3 insert(pos,beg,end);//

在 pos 位置插入[beg,end)區間的資料,無返回值

7.刪除操作

1 clear(); //

移除容器的所有資料

2 erase(beg,end); //

刪除[beg,end)區間的資料,返回下乙個資料的位置

3 erase(pos); //

刪除 pos 位置的資料,返回下乙個資料的位置

STL 之 deque的用法

deque雙端佇列,及支援vector的隨機訪問,也支援list的前後兩端插入刪除,功能很強大,現總結一下其主要用法 deque與vector很類似,vector的函式操作好像deque都支援,而且也支援pop front和push front,但是占用記憶體較多 支援dequea 100 操作 主...

stl之序列容器 deque

相比於vector,deque是一種雙向開口的連續線性空間,可以在頭尾兩端分別做元素的插入和刪除操作。這也決定了其更賦值的容器結構。deque內部維護了start和finish 節點,用於雙端的插入和刪除 map,一塊連續空間,其每個元素都是個指標,指向乙個節點。其指向的節點中有四個元素 cur f...

STL之deque(雙向佇列)

deque雙向佇列是一種雙向開口的連續線性空間,可以高效的在頭尾兩端插入和刪除元素,deque在介面上和vector非常相似,下面列出deque的常用成員函式 deque在vector函式的基礎上增加了一些函式,體現了雙向佇列的雙向性 push front 在佇列前插入乙個元素 push back ...