vector 注意

參考鏈接:
1.STL中heap的用法

  1. vec.begin() 相當於下標爲0;
    故vec.begin()+n 爲第n+1 個,與數組相同,n就是數組下標!

  2. vector 的數組長度就是size(),
    相當於數組的長度就是size(), 與capacity 無關。
    當訪問”size 與capacity 之間“,就會報錯。

  3. 2的特殊情況是,end()訪問,end()超過size時,也是越界。

  4. 關於heap,自定義的比較函數,“小於號”則最大堆(同默認),”大於號“纔是最小堆
  5. 注意到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);
  1. 注意到,雖然5中說了它們的相同點,但是在範圍上[first,last),make_heap都行,pop要求區間上的本來是堆結構(從堆結構中pop,放到最後),push要求添加元素的前面[first,last-1)是堆結構。sort沒用過不知道。

  2. 注意pop後還是堆,第一個還是最值。

  3. end()元素後,即size位置,與capacity無關!

  4. C++容器中 size(), capacity, reserve() ,resize() 函數講解
    這裏涉及到不同編譯器對capacity的擴展的實現方法,比如VS2010就是滿了之後,如果還要再加,則擴容1.5倍,比如012346913

    另外注意到滿的情況的特徵,即size=capacity.

  5. STL算法-交集,並集,差集,對稱差
    注意到前提是兩個數組序列已排好.
    另外,注意到resize在實現過程中的重要作用,不然會報錯
    再給出1個例子:
    example1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章