算法主要是由頭文件<algorithm> <functional> <numeric>組成。
<algorithm>是所有STL頭文件中最大的一個,其中常用的功能涉及到比較,交換,查找,遍歷,複製,修改,反轉,排序,合併等...
<numeric>體積很小,只包括在幾個序列容器上進行的簡單運算的模板函數.
<functional> 定義了一些模板類,用以聲明函數對象。
目錄
一、常用遍歷算法
/* 遍歷容器元素 @param beg 開始迭代器 @param end 結束迭代器 @param _callback 函數回調或者函數對象 @return 函數對象 */
/* 將指定容器區間元素搬運到另一容器中 注意 : transform 不會給目標容器分配內存,所以需要我們提前分配好內存,並且設置好大小(resize) @param beg1 源容器開始迭代器 @param end1 源容器結束迭代器 @param beg2 目標容器開始迭代器 @param _cakkback 回調函數或者函數對象 @return 返回目標容器迭代器 */
|
二、常用查找算法
/* find算法 查找元素 @param beg 容器開始迭代器 @param end 容器結束迭代器 @param value 查找的元素 @return 返回查找元素的位置的迭代器 */
/* find_if算法 條件查找 @param beg 容器開始迭代器 @param end 容器結束迭代器 @param callback 回調函數或者謂詞(返回bool類型的函數對象) @return bool 查找返回true 否則false */
/* adjacent_find算法 查找相鄰重複元素 @param beg 容器開始迭代器 @param end 容器結束迭代器 @param _callback 回調函數或者謂詞(返回bool類型的函數對象) @return 返回相鄰元素的第一個位置的迭代器 */
/* binary_search算法 二分查找法 注意: 在無序序列中不可用 @param beg 容器開始迭代器 @param end 容器結束迭代器 @param value 查找的元素 @return bool 查找返回true 否則false */
/* count算法 統計元素出現次數 @param beg 容器開始迭代器 @param end 容器結束迭代器 @param value回調函數或者謂詞(返回bool類型的函數對象) @return int返回元素個數 */
/* count_if算法 統計元素出現次數 @param beg 容器開始迭代器 @param end 容器結束迭代器 @param callback 回調函數或者謂詞(返回bool類型的函數對象) @return int返回元素個數 */
|
三、常用排序算法
/* merge算法 容器元素合併,並存儲到另一容器中 注意:兩個容器必須是有序的 @param beg1 容器1開始迭代器 @param end1 容器1結束迭代器 @param beg2 容器2開始迭代器 @param end2 容器2結束迭代器 @param dest 目標容器開始迭代器(要先resize) */
/* sort算法 容器元素排序 @param beg 容器1開始迭代器 @param end 容器1結束迭代器 @param _callback 回調函數或者謂詞(返回bool類型的函數對象) */
/* random_shuffle算法 對指定範圍內的元素隨機調整次序 @param beg 容器開始迭代器 @param end 容器結束迭代器 隨機數種子:srand( (unsigned int)time(NULL)) */
/* reverse算法 反轉指定範圍的元素 @param beg 容器開始迭代器 @param end 容器結束迭代器 */
|
四、常用拷貝和替換算法
/* copy算法 將容器內指定範圍的元素拷貝到另一容器中 @param beg 容器開始迭代器 @param end 容器結束迭代器 @param dest 目標起始迭代器 */
/* replace算法 將容器內指定範圍的舊元素修改爲新元素 @param beg 容器開始迭代器 @param end 容器結束迭代器 @param oldvalue 舊元素 @param newvalue 新元素 */
/* replace_if算法 滿足callback函數回調或者謂詞條件的元素,變爲新元素newvalue @param beg 容器開始迭代器 @param end 容器結束迭代器 @param callback函數回調或者謂詞(返回Bool類型的函數對象) @param newvalue 新元素 */
/* swap算法 互換兩個容器的元素 @param c1容器1 @param c2容器2 */ |
五、常用算數生成算法
#include <numeric> //accumulate頭文件
/* accumulate算法 計算容器元素累計總和 @param beg 容器開始迭代器 @param end 容器結束迭代器 @param value起始累加值 */
/* fill算法 向容器中添加元素 @param beg 容器開始迭代器 @param end 容器結束迭代器 @param value t填充元素 */
|
六、常用集合算法
/* set_intersection算法 求兩個set集合的交集 注意:兩個集合必須是有序序列 @param beg1 容器1開始迭代器 @param end1 容器1結束迭代器 @param beg2 容器2開始迭代器 @param end2 容器2結束迭代器 @param dest 目標容器開始迭代器 @return 目標容器的最後一個元素的迭代器地址 */
/* set_union算法 求兩個set集合的並集 注意:兩個集合必須是有序序列 @param beg1 容器1開始迭代器 @param end1 容器1結束迭代器 @param beg2 容器2開始迭代器 @param end2 容器2結束迭代器 @param dest 目標容器開始迭代器 @return 目標容器的最後一個元素的迭代器地址 */
/* set_difference算法 求兩個set集合的差集 注意:兩個集合必須是有序序列 @param beg1 容器1開始迭代器 @param end1 容器1結束迭代器 @param beg2 容器2開始迭代器 @param end2 容器2結束迭代器 @param dest 目標容器開始迭代器 @return 目標容器的最後一個元素的迭代器地址 */
|