c stl之佇列 棧 與優先佇列

2021-08-09 07:29:08 字數 1153 閱讀 4436

棧:

棧是先入後出,後入先出

有push()和pop()兩種操作   使用時定義是stacks;  top()操作是取棧頂的元素  但是不去刪除

在集合計算機的問題中的一段code、解釋:  if (idcache.cout(x)) return idcache[x]  、、 是如若找到集合x就返回他的id

佇列

佇列是 先如先出的 就像通道 

定義是 queues push()  pop()   進行入隊和出隊的操作  front ()是取隊首的操縱

stl的優先佇列也是和佇列同標頭檔案件   定義是      priority_queues;實現

例如:   實現乙個個數字大的優先順序反而小的佇列

priority_queue,cmp>pq   cmp的定義

實現優先佇列這個越小越大的佇列

priority_queue,greaterpq;  

看醜數問題

//醜數是乙個正整數,其素數因子只有2,3,5. 例如,6,8是醜數 (因為6 = 2*3, 8=2*2*2),而14不是醜數(14=2*7)因為其素數因子包含7.

//注意:1是乙個特例,也將其看做乙個素數

#include#include#include#includeusing namespace std;

typedef long long ll;//定義long long 型別的別名

const int coeff[3]=;//定義基礎陣列

int main(){

priority_queue,greater> pq;//定義優先佇列這個是越小的整數優先順序越大的優先佇列

sets;//定義集合 排重

pq.push(1);//進入佇列

s.insert(1);//插入集合

for(int i=1;;i++){

ll x=pq.top();//獲取到佇列第乙個元素(因為是按最小優先的原則排序的)

pq.pop();//第一元素出佇列 所以 第1500個醜數就是pop1499後的那個元素

if(i==1500){

cout<<"the 1500'th ugly number is "<

C STL 棧 佇列 優先佇列

棧 後進先出 last in first out lifo 標頭檔案 stack stack stack int s 棧的基本操作 s.empty 如果棧為空返回true,否則返回false s.size 返回棧中元素的個數 s.pop 刪除棧頂元素但不返回其值 s.top 返回棧頂的元素,但不刪除...

C STL之優先佇列

cpp view plain copy struct cmp1 struct cmp2 struct node1 struct node2 priority queue q1 採用預設優先順序構造佇列 priority queue,vector int cmp1 q2 最小值優先 priority ...

C STL之優先佇列

首先先講一下仿函式 可能你看了以後也還是不太明白它到底是幹什麼的,怎麼作用的,那麼我就來簡單講一下 仿函式就是帶有乙個或多個過載小括號的成員函式的乙個結構體或類,又叫做仿函式類 仿函式類既可以當函式用,又可以當結構體用,好處是這樣就可以通過傳遞模板類來給stl傳遞乙個你寫的函式 如下 include...