C 容器介面卡常用函式總結

2021-10-04 20:10:44 字數 2043 閱讀 6742

c++標準庫定義了三個順序容器介面卡:stack、queue和priority_queue。介面卡是標準庫中的乙個通用的概念。容器、迭代器和函式都有介面卡。

本質上,介面卡是一種機制,能使某物的行為看起來像另外一種事物一樣。乙個容器介面卡接受一種已有的容器型別,使其行為看起來像另外一種事物。例如:stack介面卡接受乙個順序容器(array、forward_list除外),使其行為看起來像stack一樣。

所有容器介面卡都支援的操作:

a a;

建立乙個名為a的空介面卡

a a(b);

建立乙個名為a的介面卡,並且a帶有b的拷貝

關係運算子

都支援:==、!=、<、<=、>、>=。這些運算子返回底層容器的比較結果

a.empty()

a為空,返回true,否則返回false

a.size()

返回a中元素的數目

a.swap(b)

swap(a,b);

交換a,b的內容,a和b必須是相同型別,包括底層容器的型別也必須相同。

標頭檔案,實現了先進後出的資料結構。

構造:

template > class stack;
有兩個引數,第乙個引數表示棧中存放的資料型別,int、double等;第二個引數表明這個棧的內部實現方式,預設是deque實現。當然我們也可以指明vector或者list。

除了支援表1的操作,還支援:

s.pop()

刪除棧頂元素,但不返回棧頂元素

s.push(item)

將item壓入棧頂,該元素通過拷貝或移動item而來

s.emplace(args)

將元素壓入棧頂,該元素通過args進行構造

s.top()

返回棧頂元素,但是不刪除棧頂元素

標頭檔案是,queue使用一種先進先出的儲存和訪問策略。進入佇列的物件被放置在隊尾,而離開佇列的物件則從隊首刪除。queue預設基於deque實現,當然,也可以指明為list或者vector。

q.pop()

刪除queue的隊頭元素

q.front()

返回隊頭元素,但不刪除

q.back()

返回隊尾元素,但不刪除

q.push(item)

在queue的隊尾新增元素

q.emplace(args)

在queue的隊尾新增元素,該元素由args構造

標頭檔案是,priority_queue允許我們為佇列中的元素建立優先順序,新加入的元素會排在所有優先順序比它低的已有的元素之前。priority_queue預設基於vector實現,當然也可以指明為deque實現。

q.top()

返回最高優先順序元素

q.pop()

刪除優先順序最高的元素

q.push(item)

在priority_queue的乙個恰當位置新增元素

q.emplace(args)

在priority_queue的乙個恰當的位置新增元素,該元素由args構造

priority_queue
其中,type是資料型別,container是容器型別(container必須是用陣列實現的容器,如:vector、deque,但是不可以是list),functional是比較方式。如果是內建型別,可以說使用偽函式less或者greater,預設使用的是less,如果資料型別是自定義型別,則需要自定義比較方式。自定義比較方式類似map。

排序:1)如果是自定義型別,類中實現《運算子的過載;2)偽函式方式,定義class或struct,實現操作符()的過載;3)直接過載《運算子。

class student

student(){}

std::string show()

bool operator < (const student &s) const else

}};class compelse

}};void test_priority_queue()

}

容器介面卡(棧容器介面卡 佇列容器介面卡)

我們已有的容器 比如vector list 這個容器支援的操作很多,比如插入,刪除,迭代器訪問等等。而我們希望這個容器表現出來的是棧的樣子 先進後出,入棧出棧等等,此時,我們沒有必要重新動手寫乙個新的資料結構,而是把原來的容器重新封裝一下,改變它的介面,就能把它當做棧使用了。c 定義了三種容器介面卡...

C 容器介面卡

1 什麼是介面卡 2 容器介面卡 3 為什麼將stack queue和priority queue稱作為容器介面卡 雖然stack queue priority queue中也可以存放元素,但在stl中並沒有將其劃分在容器的行列,而是將其稱為容器介面卡,這是因為每個容器在底層都有自己的實現方式,而s...

C 容器介面卡

除了順序容器外,標準庫還定義了三個順序容器介面卡 stack,queue和priority queue。介面卡是一種機制,能夠使某種事物行為看起來像另外一種事物。乙個容器介面卡接受一種已有的容器型別,使其行為看起來像一種不同的型別。所有容器介面卡都支援的操作和型別 操作和型別 說明size type...