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



相关文章
|
1月前
|
算法 数据处理 C++
c++ STL划分算法;partition()、partition_copy()、stable_partition()、partition_point()详解
这些算法是C++ STL中处理和组织数据的强大工具,能够高效地实现复杂的数据处理逻辑。理解它们的差异和应用场景,将有助于编写更加高效和清晰的C++代码。
22 0
|
5月前
|
算法 前端开发 Linux
【常用技巧】C++ STL容器操作:6种常用场景算法
STL在Linux C++中使用的非常普遍,掌握并合适的使用各种容器至关重要!
89 10
|
4月前
|
算法 C++
STL算法大全
以上只是一部分STL算法的简单概述,每一个算法都有其特定的使用场景和规则,具体使用时需要参考相关文档或者教程进行深入理解和学习。
32 0
|
5月前
|
算法 搜索推荐 C++
C++之STL常用算法(遍历、查找、排序、拷贝、替换、算数生成、集合)
C++之STL常用算法(遍历、查找、排序、拷贝、替换、算数生成、集合)
|
6月前
|
算法 C++ 容器
黑马c++ STL常用算法 笔记(5) 常用算术生成算法
黑马c++ STL常用算法 笔记(5) 常用算术生成算法
|
6月前
|
算法 C++ 容器
黑马c++ STL常用算法 笔记(4) 常用拷贝和替换算法
黑马c++ STL常用算法 笔记(4) 常用拷贝和替换算法
|
6月前
|
存储 算法 搜索推荐
黑马c++ STL常用算法 笔记(3) 排序算法
黑马c++ STL常用算法 笔记(3) 排序算法
|
6月前
|
算法 C++
黑马c++ STL常用算法 笔记(2) 查找算法
黑马c++ STL常用算法 笔记(2) 查找算法
|
6月前
|
算法 C++
c++算法学习笔记 (21) STL
c++算法学习笔记 (21) STL
|
6月前
|
算法 C++ 容器
黑马c++ STL常用算法 笔记(6) 常用集合算法
黑马c++ STL常用算法 笔记(6) 常用集合算法