STL 中算法大致分为四类
包含于<algorithm>,<numeric>,<functional>
- 非可变序列算法:指不直接修改其所操作的容器内容的算法
- 可变序列算法:指可以修改它们所操作的容器内容的算法
- 排序算法:包括对序列进行排序和合并的算法、搜索算法以及有序序列上的集合操作;
- 数值算法:对容器内容进行数值计算
最常见的算法
包括:
- 查找
- 排序
- 通用算法
- 排列组合算法
- 数值算法
- 集合算法
- 等等。。。。
代码示例
- 加和
- lambda表达式
- 查找
- 统计
#include <iostream>
#include <numeric>
#include <algorithm>
#include <functional>
using namespace std;
int main()
{
int ones[] = { 1,2,3,4,5 };
int twos[] = { 10,20,30,40,50 };
int results[5];
transform(ones, ones + 5, twos, results,std::plus<int>()); //数组元素依次相加
for_each(results, results + 5,
[](int a)->void {
cout << a << endl; }); //lambda表达式
int arr[] = {0,1,2,3,3,4,4,5,6,6,7,7,7,8};
cout << count(arr, arr + sizeof(arr) / sizeof(arr[0]), 6) << endl; // 统计6的个数
cout << count_if(arr, arr + sizeof(arr) / sizeof(arr[0]), bind2nd(less<int>(),7 )) << endl; //统计小于7的个数
int len = sizeof(arr) / sizeof(arr[0]);
cout << binary_search(arr, arr + len, 9) << endl; //二分查找
vector<int> iA(arr, arr + 2, arr + 6); //{2,3,3,4}
cout << *search(arr, arr + len, iA.begin(), iA.end()) << endl; // 查找序列,返回2
cout << endl;
return 0;
}