STL&所有算法

 STL算法部分主要由頭文件,,組成。要使用STL中的算法函數必須包含頭文件,對於數值算法須包含,中則定義了一些模板類,用來聲明函數對象。
   STL中算法大致分爲四類:
       1、非可變序列算法:指不直接修改其所操作的容器內容的算法。
       2、可變序列算法:指可以修改它們所操作的容器內容的算法。
       3、排序算法:包括對序列進行排序和合並的算法、搜索算法以及有序序列上的集合操作。
       4、數值算法:對容器內容進行數值計算。

   以下對所有算法進行細緻分類並標明功能:
    <一>查找算法(13個):判斷容器中是否包含某個值
   adjacent_find:           在iterator對標識元素範圍內,查找一對相鄰重複元素,找到則返回指向這對元素的第一個元素的ForwardIterator。否則返回last。重載版本使用輸入的二元操作符代替相等的判斷。
   binary_search:           在有序序列中查找value,找到返回true。重載的版本實用指定的比較函數對象或函數指針來判斷相等。
   count:                   利用等於操作符,把標誌範圍內的元素與輸入值比較,返回相等元素個數。
   count_if:                利用輸入的操作符,對標誌範圍內的元素進行操作,返回結果爲true的個數。
   equal_range:             功能類似equal,返回一對iterator,第一個表示lower_bound,第二個表示upper_bound。
   find:                    利用底層元素的等於操作符,對指定範圍內的元素與輸入值進行比較。當匹配時,結束搜索,返回該元素的一個InputIterator。
   find_end:                在指定範圍內查找"由輸入的另外一對iterator標誌的第二個序列"的最後一次出現。找到則返回最後一對的第一個ForwardIterator,否則返回輸入的"另外一對"的第一個ForwardIterator。重載版本使用用戶輸入的操作符代替等於操作。
   find_first_of:           在指定範圍內查找"由輸入的另外一對iterator標誌的第二個序列"中任意一個元素的第一次出現。重載版本中使用了用戶自定義操作符。
   find_if:                 使用輸入的函數代替等於操作符執行find。
   lower_bound:             返回一個ForwardIterator,指向在有序序列範圍內的可以插入指定值而不破壞容器順序的第一個位置。重載函數使用自定義比較操作。
   upper_bound:             返回一個ForwardIterator,指向在有序序列範圍內插入value而不破壞容器順序的最後一個位置,該位置標誌一個大於value的值。重載函數使用自定義比較操作。
   search:                  給出兩個範圍,返回一個ForwardIterator,查找成功指向第一個範圍內第一次出現子序列(第二個範圍)的位置,查找失敗指向last1。重載版本使用自定義的比較操作。
   search_n:                在指定範圍內查找val出現n次的子序列。重載版本使用自定義的比較操作。

    <二>排序和通用算法(14個):提供元素排序策略
   inplace_merge:           合併兩個有序序列,結果序列覆蓋兩端範圍。重載版本使用輸入的操作進行排序。
   merge:                   合併兩個有序序列,存放到另一個序列。重載版本使用自定義的比較。
   nth_element:             將範圍內的序列重新排序,使所有小於第n個元素的元素都出現在它前面,而大於它的都出現在後面。重載版本使用自定義的比較操作。
   partial_sort:            對序列做部分排序,被排序元素個數正好可以被放到範圍內。重載版本使用自定義的比較操作。
   partial_sort_copy:       與partial_sort類似,不過將經過排序的序列複製到另一個容器。
   partition:               對指定範圍內元素重新排序,使用輸入的函數,把結果爲true的元素放在結果爲false的元素之前。
   random_shuffle:          對指定範圍內的元素隨機調整次序。重載版本輸入一個隨機數產生操作。
   reverse:                 將指定範圍內元素重新反序排序。
   reverse_copy:            與reverse類似,不過將結果寫入另一個容器。
   rotate:                  將指定範圍內元素移到容器末尾,由middle指向的元素成爲容器第一個元素。
   rotate_copy:             與rotate類似,不過將結果寫入另一個容器。
   sort:                    以升序重新排列指定範圍內的元素。重載版本使用自定義的比較操作。
   stable_sort:             與sort類似,不過保留相等元素之間的順序關係。
   stable_partition:        與partition類似,不過不保證保留容器中的相對順序。

    <三>刪除和替換算法(15個)
   copy:                    複製序列
   copy_backward:           與copy相同,不過元素是以相反順序被拷貝。
   iter_swap:               交換兩個ForwardIterator的值。
   remove:                  刪除指定範圍內所有等於指定元素的元素。注意,該函數不是真正刪除函數。內置函數不適合使用remove和remove_if函數。
   remove_copy:             將所有不匹配元素複製到一個制定容器,返回OutputIterator指向被拷貝的末元素的下一個位置。
   remove_if:               刪除指定範圍內輸入操作結果爲true的所有元素。
   remove_copy_if:          將所有不匹配元素拷貝到一個指定容器。
   replace:                 將指定範圍內所有等於vold的元素都用vnew代替。
   replace_copy:            與replace類似,不過將結果寫入另一個容器。
   replace_if:              將指定範圍內所有操作結果爲true的元素用新值代替。
   replace_copy_if:         與replace_if,不過將結果寫入另一個容器。
   swap:                    交換存儲在兩個對象中的值。
   swap_range:              將指定範圍內的元素與另一個序列元素值進行交換。
   unique:                  清除序列中重複元素,和remove類似,它也不能真正刪除元素。重載版本使用自定義比較操作。

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