1.查找算法(13個):判斷容器中是否包含某個值
adjacent_find //在iterator對標識元素范圍內,查找一對相鄰 //重復元素,找到則返回指向這對元素的第一個元素的ForwardIterator。 //否則返回last。重載版本使用輸入的二元操作符代替相等的判斷。 binary_search //在有序序列中查找value,找到返回true。 //重載的版本實用指定的比較函數對象或函數指針來判斷相等。 includes //判斷區間1是否包含2,是binary_search的擴展 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次的子序列。重載版本使用自定義的比較操作。
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類似,不過不保證保留容器中的相對順序。3.刪除和替換算法(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類似,它也不能 //真正刪除元素。重載版本使用自定義比較操作。 unique_copy //與unique類似,不過把結果輸出到另一個容器。4.排列組合算法(2個):提供計算給定集合按一定順序的所有可能排列組合
next_permutation //取出當前范圍內的排列,並重新排序為 //下一個排列。重載版本使用自定義的比較操作。 prev_permutation //取出指定范圍內的序列並將它重新排序 //為上一個序列。如果不存在上一個序列則返回false。重載版本使用自定義的比較操作。5.算術算法(4個)
accumulate //iterator對標識的序列段元素之和,加到一個由 //val指定的初始值上。重載版本不再做加法,而是傳進來的二元操作符被應用到元素上。 partial_sum //創建一個新序列,其中每個元素值代表指定 //范圍內該位置前所有元素之和。重載版本使用自定義操作代替加法。 inner_product //對兩個序列做內積(對應元素相乘,再求和)並 //將內積加到一個輸入的初始值上。重載版本使用用戶定義的操作。 adjacent_difference //創建一個新序列,新序列中每個新值代表 //當前元素與上一個元素的差。重載版本用指定二元操作計算相鄰元素的差。6.生成和異變算法(6個)
fill //將輸入值賦給標志范圍內的所有元素。 fill_n //將輸入值賦給first到first+n范圍內的所有元素。 for_each //用指定函數依次對指定范圍內所有元素進行迭代訪問, //返回所指定的函數類型。該函數不得修改序列中的元素。 generate //連續調用輸入的函數來填充指定的范圍。 generate_n //與generate函數類似,填充從指定iterator開始的n個元素。 transform //將輸入的操作作用與指定范圍內的每個元素,並產生一個新的序列。 //重載版本將操作作用在一對元素上,另外一個元素來自輸入的另外一個序列。結果輸出到指定容器。7.關系算法(8個)
equal //如果兩個序列在標志范圍內元素都相等,返回true。 //重載版本使用輸入的操作符代替默認的等於操作符。 includes //判斷第一個指定范圍內的所有元素是否都被第二個 //范圍包含,使用底層元素的<操作符,成功返回true。重載版本使用用戶輸入的函數。 lexicographical_compare //比較兩個序列。重載版本使用用戶自定義比較操作。 max //返回兩個元素中較大一個。重載版本使用自定義比較操作。 max_element //返回一個ForwardIterator,指出序列中最大的元素。重載版本使用自定義比較操作。 min //返回兩個元素中較小一個。重載版本使用自定義比較操作。 min_element //返回一個ForwardIterator,指出序列中最小的元素。重載版本使用自定義比較操作。 mismatch //並行比較兩個序列,指出第一個不匹配的位置,返回一對iterator, //標志第一個不匹配元素位置。如果都匹配,返回每個容器的last。重載版本使用自定義的比較操作。8.集合算法(4個)
set_union //構造一個有序序列,包含兩個序列中所有的不重復元素。重載版本使用自定義的比較操作。 set_intersection //構造一個有序序列,其中元素在兩個序列中都存在。重載版本使用自定義的比較操作。 set_difference //構造一個有序序列,該序列僅保留第一個序列中存在的而 //第二個中不存在的元素。重載版本使用自定義的比較操作。 set_symmetric_difference //構造一個有序序列,該序列取兩個序列的對稱差集(並集-交集)。9.堆算法(4個)
make_heap //把指定范圍內的元素生成一個堆。重載版本使用自定義比較操作。 pop_heap //並不真正把最大元素從堆中彈出,而是重新排序堆。它把 //first和last-1交換,然後重新生成一個堆。可使用容器的back來訪問 //被"彈出"的元素或者使用pop_back進行真正的刪除。重載版本使用自定義的比較操作。 push_heap //假設first到last-1是一個有效堆,要被加入到堆的元素存放在 //位置last-1,重新生成堆。在指向該函數前,必須先把元素插入容器後。重載版本使用指定的比較操作。 sort_heap //對指定范圍內的序列重新排序,它假設該序列是個有序堆。重載版本使用自定義比較操作。10.常用算法圖示