assass cannotin的超級二叉堆模板

2021-08-15 11:38:39 字數 1171 閱讀 3145

template

class heap

void up(int now)

heap[now]=temp;

} void down(int now)

}heap[now]=temp;

}public:

heap()

inline

void push(t a)

inline

void pop()

inline t top()

inline t pop_out()

inline

void clear()

inline

bool empty()

inline

int size()

};

push是插入操作

pop是彈出堆頂

pop_out是返回堆頂並彈出

top是訪問堆頂元素

max_size是最多能容納幾個元素(可能這個就是為什麼比stl快的原因)

clear是(偽)清空堆內元素,不清空記憶體

assass_cannotin的堆不支援運算子,也就是不管是什麼型別,都要使用cmp函式

但我覺得這樣更好更方便

注: 1.cmp函式的第乙個引數優先順序更高

2.這個堆一開始就是空的,不用clear

3.什麼型別都可以,什麼node,****都可以

下面是使用樣例,乙個int型別,元素上限是10000009的小根堆

inline

bool cmp(const

int &a,const

int &b){return aint,1000010,cmp>heap;

很妙很妙

具體效率優勢

下面是assass_cannotin的堆模板

上面的是priority_queue

蒟蒻太弱了,先跑了

2018.3.19更新

改為遞迴版

container of 的的的原理

另外一篇,同樣精彩,揭開linux核心中container of的神秘面紗 華清遠見嵌入式學院講師。在linux 核心中有乙個大名鼎鼎的巨集container of 這個巨集是用來幹嘛的呢?我們先來看看它在核心中是怎樣定義的。呵呵,乍一看不知道是什麼東東。我們先來分析一下container of p...

存在的就是合理的,發生的即是必然的。

筆者有時候會想,什麼是對,什麼是錯?對於追求某一件事情之前首先會考慮,為什麼我要做這件事情。所以經過自我分析和生活周邊環境的總結。我認為,對於乙個人來,這是在站在個體的角度上說。什麼是對的?就是你自己覺得是對的,它就是對的。不過這個只是你自己的想法。主觀上的正確,不代表客觀上也受到了別人的認可。就拿...

Apache的rewrite的重寫相關的引數

apache mod rewrite規則重寫的標誌一覽 使用mod rewrite時常用的伺服器變數 rewriterule規則表示式的說明 匹配任何單字元 chars 匹配字串 chars chars 不匹配字串 chars text1 text2 可選擇的字串 text1或text2 匹配0到1...