1. 程式人生 > >STL中的堆的使用方法

STL中的堆的使用方法

作用:把這一段的陣列或向量做成一個堆的結構。堆的範圍是[first,last)  注意不包括last尾後指標或尾後迭代器

(2)pop_heap();函式原型是:void pop_heap(first_pointer,end_pointer,compare_function);

作用:pop_heap()不是真的把最大(最小)的元素從堆中彈出來。而是重新排序堆。它把first和last-1這兩個堆元素交換位置,然後將[first,last-1)的之間的元素做成一個堆,不包括last-1

(3)push_heap();函式原型是: void pushheap(first_pointer,end_pointer,compare_function);


作用:push_heap()假設由[first,last-1)是一個有效的堆,然後,再把堆中的新元素last-1進來,做成一個堆,堆的範圍變成[first,last)

(4)用的不多。sort_heap();函式原型是:void sort_heap(first_pointer,end_pointer,compare_function);

作用:sort_heap對[first,last)中的序列進行排序。它假設這個序列是有效堆。(當然,經過排序之後就不是一個有效堆了)

例子:注意尾後指標和堆最後一個元素的區別就行。


執行結果:


相關推薦

STL的使用方法

作用:把這一段的陣列或向量做成一個堆的結構。堆的範圍是[first,last)  注意不包括last尾後指標或尾後迭代器 (2)pop_heap();函式原型是:void pop_heap(first_pointer,end_pointer,compare_function); 作用:pop_heap

C++STL 的線性容器整體/逐元素操作方法 少寫80%for循環

個數 multipl 頭文件 turn 含義 enc function thead gcd 本文中示例代碼默認已引用 std 命名空間 累加 (std::accumulate) accumulate(begin, end, init, op) 返回給定區間內元素的累加值與給

STLset的使用方法

第一次想認真地學學set,是在我做一題treap的時候產生的念頭。(HNOI2004 寵物收養場,洛谷P2286) 嗯,雖然學過一丟丟的treap和splay,但是這程式設計複雜度貌似有點高…… 無奈翻開了題解,發現了一部分神犇是用set來做這題的(甚至只有30+行程式碼) 那麼,我是一個不願意敲太多程

c++ STLsort函式的三種使用方法

複習一下~ STL,C++中的標準模板庫, 使用起來方便並且效率較高; sort函式有三種用法: 一:對基本型別陣列從小到大排序 sort( 陣列名+n1,陣列名+n2); 將陣列中下標從n1到n2的元素進行從小到大排序,不包括n2,通過n1,n2 可以對整

詳解JVM、棧、方法區(對象、值)是如何調用執行的

沒有 自定義 成了 coo 裏的 原始類型 元素 動手 完成 這兩天看了一下深入淺出JVM這本書,推薦給高級的java程序員去看,對你了解JAVA的底層和運行機制有比較大的幫助。 先了解具體的概念:JAVA的JVM的內存可分為3個區:堆(heap)、棧(stack)和方法區

STL的set使用方法詳細!!!!

1.關於set C++ STL 之所以得到廣泛的讚譽,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封裝了許多複雜的資料結構演算法和大量常用資料結構操作。vector封裝陣列,list封裝了連結串列,map和set封

STLlist的erase()方法的使用

 最近剛剛接觸stl的list    學習的時候遇到了很多的困難   現在記錄一下   主要是erase方法的使用 erase()方法是刪除iterator指定的節點  但是要注意的是在執行完此函式的時候iterator也被銷燬了   這樣的話關於iterator的操作就會報錯     以下是關於eras

STL容器list的sort方法詳解

** List 不能使用STL提供的演算法 sort() , 必須使用自己定義的sort() member function,因為STL演算法sort()只接受RamdonAccessIterator,它的實現程式碼如下,是一個quick sort; *

STL棧和佇列的使用方法

/**//* *===================================* | | | STL中優先佇列使用方法 | | |

使用stl的 advance和 distance 方法來進行iterator的加減

 template<typename _InputIterator>     inline typename iterator_traits<_InputIterator>::difference_type     distance(_InputIterator __first, _

Java JVM ,棧,方法區 詳解

一 jvm執行時資料區有哪些 我們先來看一張圖 JVM執行時資料區分類 1. JVM棧 (Java Virtual Machine Stacks) 2. 堆記憶體 (Heap Memory) 3. 方法區 (Method Area) 4.

C++ STL佇列(queue)的使用方法

原文地址 基本操作: push(x) 將x壓入佇列的末端 pop() 彈出佇列的第一個元素(隊頂元素),注意此函式並不返回任何值 front() 返回第一個元素(隊頂元素) back() 返回最後被壓入的元素(隊尾元素) empty() 當佇列為空時,返回true

STLvector/list的幾種賦值方法的速度比較

本文地址: http://blog.csdn.net/autophyte/archive/2008/11/08/3256096.aspx    因為工作中遇到要對比較大的vector以及list進行比較頻繁的互相複製的動作,為了提高賦值速度,所以對幾種賦值方式的耗時進行了一

STLstack與queue庫函式 的使用方法

 1、stack stack 模板類的定義在<stack>標頭檔案中。 stack 模板類需要兩個模板引數,一個是元素型別,一個容器型別,但只有元素型別是必要 的,在不指定容器型別時,預設的容器型別為deque。 定義stack 物件的示例程式碼如下: st

3.1.3 STLlist、map、vector的使用方法

(一)list的使用方法: 程式碼: #include <iostream> #include <list> #include <algorithm> #include <numeric> #include <itera

STL的Pair方法詳解

類模板:template <class T1, class T2> struct pair 引數:T1是第一個值的資料型別,T2是第二個值的資料型別。 功能:pair將一對值組合成一個值,這一對值可以具有不同的資料型別(T1和T2),兩個值可以分別用pai

STL佇列(queue)的使用方法

STL 中優先佇列的使用方法(priority_queu) 優先佇列容器與佇列一樣,只能從隊尾插入元素,從隊首刪除元素。但是它有一個特性,就是佇列中最大的元素總是位於隊首,所以出隊時,並非按照先進先出的原則進行,而是將當前佇列中最大的元素出隊。這點類似於給佇列裡的元素進行了由大互小的順序排序。元素的比較規則

Unity SLua 如何調用UnityC#方法

都差不多 public title 接口 如何 1.原理就是通常在Lua框架中所說的,開放一個C#的web接口,或者叫做在Slua框架中註冊函數。2.作用在Lua中調用C#中的方法,這個是在做熱更新中很常用的一種方法,無論是slua,還是lua,都差不多、這

jqueryprop()方法和attr()方法的區別淺析

clas ttr over dex idt pro query selected accesskey jquery1.6中新加了一個方法prop(),一直沒用過它,官方解釋只有一句話:獲取在匹配的元素集中的第一個元素的屬性值。 大家都知道有的瀏覽器只要寫disabled,c

js方法

合並 一段 spl 刪除 元素 font 返回 splice ice Array數組操作  Array.slice() arrayObject.slice(start,end)//返回值:返回一個新的數組,包含從 start 到 end (不包括該元素)的 arra