目录
常用算法概述:
- 算法主要有头文件
、 、 是所有 STL 头文件中最大的一个,涉及 比较、交换、查找、遍历操作、复制、修改等 定义了一些模板类,用来声明内建函数对象(仿函数) 体积小,只包含几个在序列上面进行简单数学运算的模板函数
功能:
- 实现遍历容器,遍历容器元素
函数原型:
for_each(iterator beg, iterator end, _func);beg —— 开始迭代器
end —— 结束迭代器
_func—— 函数或者函数对象
测试代码:
- #include
- using namespace std;
- #include
- #include
- #include
-
- class Person {
- public:
- Person(string name, int age) :m_Name(name), m_Age(age) {}
- string m_Name;
- int m_Age;
- };
-
- // 普通函数
- void PrintVector1(Person& p) {
- cout << p.m_Name << " " << p.m_Age << endl;
- }
-
- // 仿函数
- class PrintVector2 {
- public:
- void operator()(Person& p) {
- cout << p.m_Name << " " << p.m_Age << endl;
- }
- };
-
- void test() {
- vector
PV; - Person p1("张三", 19);
- Person p2("李四", 20);
- Person p3("王五", 18);
-
- PV.push_back(p1);
- PV.push_back(p2);
- PV.push_back(p3);
-
- // 普通函数
- for_each(PV.begin(), PV.end(), PrintVector1);
-
- // 函数对象
- for_each(PV.begin(), PV.end(), PrintVector2());
- }
-
- int main() {
- test();
- system("pause");
- return 0;
- }
运行结果:

功能:
- 搬运容器到另一个容器
函数原型:
transform(iterator beg1, iterator end1, iterator beg2, _func);beg1 —— 源容器开始迭代器
end1 —— 源容器结束迭代器
beg2 —— 目标容器开始迭代器
_func —— 函数或者函数对象
测试代码:
- #include
- using namespace std;
- #include
- #include
-
- class Transform {
- public:
- int operator()(const int& val) {
- return val;
- }
- };
-
- class Print {
- public:
- void operator()(const int& val) {
- cout << val << " ";
- }
- };
-
- void test() {
- vector<int>v1;
- for (int i = 0; i < 10; ++i) {
- v1.push_back(i);
- }
-
- vector<int>v2; // 目标容器
-
- // 目标容器提前开辟空间
- v2.resize(v1.size());
-
- transform(v1.begin(), v1.end(), v2.begin(), Transform());
-
- for_each(v2.begin(), v2.end(), Print());
- }
-
- int main() {
- test();
- system("pause");
- return 0;
- }
-
运行结果:
