deque雙端佇列容器

2021-07-04 13:24:31 字數 2730 閱讀 2969

c++中的stl還是比較有用的,尤其是在做科研實現演算法的時候,之前也有用過,但是沒怎麼系統地學過,因此最近找了本書,大致瀏覽了一下,葉志軍的那本《c++ stl開發技術導引》,科普、入門性質的一本書,寫得比較淺[呵呵,勿噴]。下面的內容大部分是摘自該書。

deque雙端佇列容器(double-ended queue),可以在尾部、頭部插入、刪除元素,採用分塊的線性結構來儲存資料,兩個迭代器分別指向容器的首尾元素,以deque塊為單位進行記憶體分配,使用二級的map進行管理。

有以下幾種方式來建立deque容器物件。

(1) deque()

該種方式所建立的deque容器已經具有乙個物件,只是頭尾迭代器重疊,容器中還沒有任何元素。

deque

d;

(2) deque(size_type n)

建立乙個具有n個元素的deque物件,每個元素採用對應型別的預設值。

deque

d(10);//10個元素的初始值為0

(3) deque(size_type n,const t& value)

建立乙個具有n個元素的deque物件,這些元素的初始值為value。

deque

d(10,2.5);

(4) deque(const deque&)

拷貝建構函式。

deque

d1(5,』k』);

deque

d2(d1);

(5) deque(const inputiterator first,const inputiterator last,const a&a=a())

int

array=;

deque

d(array,array+5);

利用push_back函式在尾部壓入新元素。

deque

d;d.push_back(10);

可以採用陣列和迭代器的方式進行訪問。

利用陣列方式訪問deque元素:

#include

#include

using

namespace

std;

int main()

用迭代器方式訪問deque元素:

#include

#include

using

namespace

std;

int main()

deque使用了兩個迭代器分別指向雙端佇列的首尾,deque有高效的頭部插入元素的函式push_front(),其原型為:

void push_front(const t&);
其他位置的插入涉及元素的移位拷貝,insert函式在pos位置之前插入元素x,

iterator insert(iterator pos,const t& x);
例:

#include

#include

using

namespace

std;

int main()

cout

/中間位置插入

d.insert(d.begin()+2,4);//在第3個元素之前插入4

for(int i=0;icout

cout

0;}

刪除首元素pop_front函式,刪除尾元素pop_back函式,刪除任意位置或者迭代區間erase函式,刪除所有元素clear函式。

#include

#include

using

namespace

std;

int main()

cout

/頭尾和任意位置刪除元素

d.erase(d.begin()+2);//刪除第3個元素

d.pop_front();

d.pop_back();

for(int i=0;icout

} cout

/刪除所有元素

cout

0;}

反向迭代器reverse_iterator和const_reverse_iterator。

#include

#include

using

namespace

std;

int main()

利用swap函式進行交換。

Deque雙端佇列容器

1 deque雙端佇列容器建立deque物件 可建立無任何元素的或者具有n個元素的或者具有n個元素的並賦初值的 include include include include include include include include include include include includ...

deque雙端佇列容器

deque採用分塊的星星儲存結構來儲存資料,每塊的大小一般為512個位元組,稱為乙個deque塊,所有的deque塊使用乙個map塊進行管理,每個map資料項紀錄各塊的首位址。deque塊在頭部和尾部都可以插入和刪除元素,而不需要移動其他元素 使用push back 方法在尾部插入元素,會擴張佇列 ...

關於deque容器 雙端佇列

如果不是vector每次配置新的空間時都留有餘裕,其成長假象所帶來的代價是非常昂貴的。deqt 預設構造形式 deque begin,end 建構函式將 beg,end 區間中的元素拷貝給本身。deque n,elem 建構函式將n個elem拷貝給本身。deque const deque deq 拷...