c++:STL常用算法

算法主要是由頭文件<algorithm> <functional> <numeric>組成。

<algorithm>是所有STL頭文件中最大的一個,其中常用的功能涉及到比較,交換,查找,遍歷,複製,修改,反轉,排序,合併等...

<numeric>體積很小,只包括在幾個序列容器上進行的簡單運算的模板函數.

<functional> 定義了一些模板類,用以聲明函數對象。


目錄

 一、常用遍歷算法

二、常用查找算法

三、常用排序算法

四、常用拷貝和替換算法

五、常用算數生成算法

六、常用集合算法


 

 

 一、常用遍歷算法

  • for_each(iterator beg, iterator end, _callback)

/*

    遍歷容器元素

    @param beg 開始迭代器

    @param end 結束迭代器

    @param _callback  函數回調或者函數對象

    @return 函數對象

*/

 

  • transform(iterator beg1, iterator end1, iterator beg2, _callbakc)

/*

    將指定容器區間元素搬運到另一容器中

    注意 : transform 不會給目標容器分配內存,所以需要我們提前分配好內存,並且設置好大小(resize)

    @param beg1 源容器開始迭代器

    @param end1 源容器結束迭代器

    @param beg2 目標容器開始迭代器

    @param _cakkback 回調函數或者函數對象

    @return 返回目標容器迭代器

*/

 

 

二、常用查找算法

  • find(iterator beg, iterator end, value)

/*

    find算法 查找元素

    @param beg 容器開始迭代器

    @param end 容器結束迭代器

    @param value 查找的元素

    @return 返回查找元素的位置的迭代器

*/

 

  • find_if(iterator beg, iterator end, _callback);

/*

    find_if算法 條件查找

    @param beg 容器開始迭代器

    @param end 容器結束迭代器

    @param  callback 回調函數或者謂詞(返回bool類型的函數對象)

    @return bool 查找返回true 否則false

*/

 

  • adjacent_find(iterator beg, iterator end, _callback);

/*

    adjacent_find算法 查找相鄰重複元素

    @param beg 容器開始迭代器

    @param end 容器結束迭代器

    @param  _callback 回調函數或者謂詞(返回bool類型的函數對象)

    @return 返回相鄰元素的第一個位置的迭代器

*/

 

  • bool binary_search(iterator beg, iterator end, value);

/*

    binary_search算法 二分查找法

    注意: 在無序序列中不可用

    @param beg 容器開始迭代器

    @param end 容器結束迭代器

    @param value 查找的元素

    @return bool 查找返回true 否則false

*/

 

  • count(iterator beg, iterator end, value);

/*

    count算法 統計元素出現次數

    @param beg 容器開始迭代器

    @param end 容器結束迭代器

    @param  value回調函數或者謂詞(返回bool類型的函數對象)

    @return int返回元素個數

*/

 

  • count_if(iterator beg, iterator end, _callback);

/*

    count_if算法 統計元素出現次數

    @param beg 容器開始迭代器

    @param end 容器結束迭代器

    @param  callback 回調函數或者謂詞(返回bool類型的函數對象)

    @return int返回元素個數

*/

 

 

三、常用排序算法

  • merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)

/*

    merge算法 容器元素合併,並存儲到另一容器中

    注意:兩個容器必須是有序的

    @param beg1 容器1開始迭代器

    @param end1 容器1結束迭代器

    @param beg2 容器2開始迭代器

    @param end2 容器2結束迭代器

    @param dest  目標容器開始迭代器(要先resize)

*/

 

  • sort(iterator beg, iterator end, _callback)

/*

    sort算法 容器元素排序

    @param beg 容器1開始迭代器

    @param end 容器1結束迭代器

    @param _callback 回調函數或者謂詞(返回bool類型的函數對象)

*/

 

  • random_shuffle(iterator beg, iterator end)

/*

    random_shuffle算法 對指定範圍內的元素隨機調整次序

    @param beg 容器開始迭代器

    @param end 容器結束迭代器

     隨機數種子:srand( (unsigned int)time(NULL))

*/

 

  • reverse(iterator beg, iterator end)

/*

    reverse算法 反轉指定範圍的元素

    @param beg 容器開始迭代器

    @param end 容器結束迭代器

*/

 

 

四、常用拷貝和替換算法

  • copy(iterator beg, iterator end, iterator dest)

/*

    copy算法 將容器內指定範圍的元素拷貝到另一容器中

    @param beg 容器開始迭代器

    @param end 容器結束迭代器

    @param dest 目標起始迭代器

*/

  • replace(iterator beg, iterator end, oldvalue, newvalue)

/*

    replace算法 將容器內指定範圍的舊元素修改爲新元素

    @param beg 容器開始迭代器

    @param end 容器結束迭代器

    @param oldvalue 舊元素

    @param newvalue 新元素

*/

 

  • replace_if(iterator beg, iterator end, _callback, newvalue)

/*

    replace_if算法 滿足callback函數回調或者謂詞條件的元素,變爲新元素newvalue

    @param beg 容器開始迭代器

    @param end 容器結束迭代器

    @param callback函數回調或者謂詞(返回Bool類型的函數對象)

    @param newvalue 新元素

*/

  • swap(container c1, container c2)

/*

    swap算法 互換兩個容器的元素

    @param c1容器1

    @param c2容器2

*/

 

五、常用算數生成算法

#include <numeric> //accumulate頭文件
  • accumulate(iterator beg, iterator end, value)

/*

    accumulate算法 計算容器元素累計總和

    @param beg 容器開始迭代器

    @param end 容器結束迭代器

    @param value起始累加值

*/

 

  • fill(iterator beg, iterator end, value)

/*

    fill算法 向容器中添加元素

    @param beg 容器開始迭代器

    @param end 容器結束迭代器

    @param value t填充元素

*/

 

 

六、常用集合算法

  • set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)

/*

    set_intersection算法 求兩個set集合的交集

    注意:兩個集合必須是有序序列

    @param beg1 容器1開始迭代器

    @param end1 容器1結束迭代器

    @param beg2 容器2開始迭代器

    @param end2 容器2結束迭代器

    @param dest  目標容器開始迭代器

    @return 目標容器的最後一個元素的迭代器地址

*/

 

  • set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)

/*

    set_union算法 求兩個set集合的並集

    注意:兩個集合必須是有序序列

    @param beg1 容器1開始迭代器

    @param end1 容器1結束迭代器

    @param beg2 容器2開始迭代器

    @param end2 容器2結束迭代器

    @param dest  目標容器開始迭代器

    @return 目標容器的最後一個元素的迭代器地址

*/

 

  • set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)

/*

    set_difference算法 求兩個set集合的差集

    注意:兩個集合必須是有序序列

    @param beg1 容器1開始迭代器

    @param end1 容器1結束迭代器

    @param beg2 容器2開始迭代器

    @param end2 容器2結束迭代器

    @param dest  目標容器開始迭代器

    @return 目標容器的最後一個元素的迭代器地址

*/

 

 

 

 

 

 

 

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