參考鏈接:
1.STL中heap的用法
vec.begin() 相當於下標爲0;
故vec.begin()+n 爲第n+1 個,與數組相同,n就是數組下標!vector 的數組長度就是size(),
相當於數組的長度就是size(), 與capacity 無關。
當訪問”size 與capacity 之間“,就會報錯。2的特殊情況是,end()訪問,end()超過size時,也是越界。
- 關於heap,自定義的比較函數,“小於號”則最大堆(同默認),”大於號“纔是最小堆!
- 注意到heap的4個函數的參數都相同,也同返回值。
void make_heap(first_pointer,end_pointer,compare_function);
void pop_heap(first_pointer,end_pointer,compare_function);
void push_heap(first_pointer,end_pointer,compare_function);
void sort_heap(first_pointer,end_pointer,compare_function);
注意到,雖然5中說了它們的相同點,但是在範圍上[first,last),make_heap都行,pop要求區間上的本來是堆結構(從堆結構中pop,放到最後),push要求添加元素的前面[first,last-1)是堆結構。sort沒用過不知道。
注意pop後還是堆,第一個還是最值。
end()元素後,即size位置,與capacity無關!
C++容器中 size(), capacity, reserve() ,resize() 函數講解
這裏涉及到不同編譯器對capacity的擴展的實現方法,比如VS2010就是滿了之後,如果還要再加,則擴容1.5倍,比如012346913另外注意到滿的情況的特徵,即size=capacity.
STL算法-交集,並集,差集,對稱差
注意到前提是兩個數組序列已排好.
另外,注意到resize在實現過程中的重要作用,不然會報錯
再給出1個例子:
example1