算法主要由头文件<algorithm> <functional> <numeric>组成
<algorithm>是所有STL头文件最大的一个,范围时机到比较、交换、查找、遍历操作、复制、修改
<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数
<functional>定义了一些模板类,用以声明函数对象
1.for_each()
class MyPrint
{
public:
void operator()(int val)
{
cout << val << " ";
}
};
void Print_Vector(int val)
{
cout << val<<" ";
}
void test01()
{
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
v.push_back(50);
for_each(v.begin(), v.end(), MyPrint());//仿函数
cout << endl;
for_each(v.begin(), v.end(), Print_Vector);//普通函数
cout << endl;
}
2.transform()
class Transform
{
public:
int operator()(int val)
{
return val + 100;//搬运过程可对数进行操作
}
};
void Print_Vector(int val)
{
cout << val<<" ";
}
void test01()
{
vector<int> v1;
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
v1.push_back(40);
v1.push_back(50);
vector<int> v2;
v2.resize(v1.size());//预留空间
transform(v1.begin(), v1.end(), v2.begin(), Transform());//仿函数实现
for_each(v2.begin(), v2.end(), Print_Vector);//110 120 130 140 150
cout << endl;
}