STL算法之生成异变算法

简介: STL算法之生成异变算法

算法函数

生成异变算法

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算法的生成异变算法函数大概就是这些。



相关文章
|
7月前
|
算法 搜索推荐 C++
【C++STL基础入门】vector运算和遍历、排序、乱序算法
【C++STL基础入门】vector运算和遍历、排序、乱序算法
|
2月前
|
存储 算法 JavaScript
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)(二)
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)
33 0
|
2月前
|
算法 搜索推荐 程序员
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)(一)
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)
41 0
|
3月前
|
存储 算法 搜索推荐
C++模板与STL【常用算法】
C++模板与STL【常用算法】
|
3月前
|
算法 C++ 容器
【C++】 --- STL常用算法总结(三)
【C++】 --- STL常用算法总结
27 0
|
3月前
|
存储 算法 搜索推荐
【C++】 --- STL常用算法总结(二 )
【C++】 --- STL常用算法总结
37 0
|
3月前
|
算法 C++ 容器
【C++】 --- STL常用算法总结(一)
【C++】 --- STL常用算法总结
34 0
|
4月前
|
算法 C++ 容器
【C++STL基础入门】list的运算符重载和关于list的算法
【C++STL基础入门】list的运算符重载和关于list的算法
【C++STL基础入门】list的运算符重载和关于list的算法
|
5月前
|
算法 搜索推荐 C++
C++ STL容器和算法:详解和实例演示
C++ STL(标准模板库)提供了一组丰富的容器和算法,使得开发者能够更加高效地编写程序。本文将介绍STL中的一些常用容器和算法。
116 0
|
8月前
|
算法 C++
[Eigen中文文档] STL迭代器和算法
从 3.4 版本开始,Eigen 的稠密矩阵和数组提供了 STL 兼容的迭代器。这使 Eigen 自然地与 range-for 循环和 STL 算法兼容。
112 0