算法函数
生成异变算法
1.for_each()
2.fill 填充
3.fill_n 前n个元素用value填充
4.generate 填充
5.generate_n 填充前面n个元素
6.transform 一元操作
注意
使用算法的时候加上头文件 algorithm
还有functional头文件(有的算法函数会用)
for_each()
有三个参数,前两个参数表示迭代器的范围,第三个参数是一个函数(可采用lambda表达式)
在这里插入代码片 #include<iostream> #include<algorithm> #include<vector> #include<string> #include<functional> using namespace std; int main() { // 1.for_each()算法 vector<int> v1 = { 1, 2, 3, 4, 5, 6, 6 }; for_each(v1.begin(), v1.end(), [](int date) {cout << " " << date; }); //第三个参数可用lambda表达式-->打印数据 批量修改数据等 // lambda表达式(返回值)函数指针的方式 //传引用或者指针,修改数据,形参不影响实参 cout << endl; return 0; }
fill()函数
/ fill函数的作用是:将一个区间的元素都赋予val值。函数参数:fill(vec.begin(), vec.end(), val); val为将要替换的值。
注意:填充容器的时候,容器要有容量
#include<iostream> #include<algorithm> #include<vector> #include<string> #include<functional> using namespace std; int main() { //2. fill()算法 填充 // fill函数的作用是:将一个区间的元素都赋予val值。函数参数:fill(vec.begin(), vec.end(), val); val为将要替换的值。 //注意:填充容器的时候,容器要有容量 vector<int> v2(3); fill(v2.begin(), v2.end(), 3); //前面的用3来填充 for_each(v2.begin(), v2.end(), [](int& date) {cout << " " << date; }); cout << endl; return 0; }
fill_n()函数
fill_n函数的作用是 :参数包括 : 一个迭代器,一个计数器以及一个值。该函数从迭代器指向的元素开始,将指定数量的元素设置为给定的值。 :
include<iostream> #include<algorithm> #include<vector> #include<string> #include<functional> using namespace std; int main() { //3.fill_n()算法 //fill_n函数的作用是 :参数包括 : 一个迭代器,一个计数器以及一个值。该函数从迭代器指向的元素开始,将指定数量的元素设置为给定的值。 vector<int> v3 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; fill_n(v3.begin(), 2, 3); for_each(v3.begin(), v3.end(), [](int& date) {cout << " " << date; }); cout << endl; return 0; }
generate()函数
第三个参数,无参的函数指针 返回值 void类型
#include<iostream> #include<algorithm> #include<vector> #include<string> #include<functional> using namespace std; int main() { vector<int> v4 = { 1, 2, 3, 4, 5, 6, 7 }; generate(v4.begin(), v4.end(), []() {return 33; }); for_each(v4.begin(), v4.end(), [](int& date) {cout << " " << date; }); return 0; }
generate_n()函数
/返回值迭代器
//包含头文件 functional
//函数参数跟 fill函数参数差不多
#include<iostream> #include<algorithm> #include<vector> #include<string> #include<functional> using namespace std; int main() { vector<int> v5 = { 1, 2, 3, 4 , 5, 6, 7, 8 }; generate_n(v5.begin(), 6, []() {return 3; }); for_each(v5.begin(), v5.end(), [](int& date) {cout << " " << date; }); cout << endl; return 0; }
transform()函数
第一个和第二个参数是迭代器范围,第三个参数为存储的迭代器,第四个参数为函数
#include<iostream> #include<algorithm> #include<vector> #include<string> #include<functional> using namespace std; int main() { vector<int> v6 = { 1, 2, 3, 4, 5, 6 }; vector<int> v7(v6.size()); transform(v6.begin(), v6.end(), v7.begin(), [](int& date) {return -date; }); for_each(v7.begin(), v7.end(), [](int& date) {cout << " " << date; }); return 0;
STL算法的生成异变算法函数大概就是这些。