第九层(11):STL之常用遍历算法

简介: 第九层(11):STL之常用遍历算法

前情回顾


在上一块石碑中,我学到了函数对象,同时下一块石碑也显露出来…


🚄上章地址:第九层(10):STL之函数对象


常用算法


算法主要是由头文件:

#include<algorithm>
#include<functional>
#include<numeric>


其中algorithm是最大的一个头文件,它其中包含是比较,交换,查找,遍历,复制等等,functional就是内建函数对象,numeric体积很小,其中有一些简单的数学运算的模板函数


常用遍历算法


常用的遍历算法有两种:

for_each//遍历容器
transform//搬运容器到另一个容器


for_each


for_each(beg,end,_func)


beg指的是开始迭代器,从哪里去遍历,end指结束迭代器,到哪里结束,_func表示一个函数,是在遍历的时候进行的操作,例如打印,可以用函数对象

使用:


#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>
void print(int a)
{
  cout << a << " ";
}
void test1()
{
  vector<int> v;
  for (int i = 0; i < 10; ++i)
  {
  v.push_back(i);
  }
  for_each(v.begin(), v.end(), print);
  cout << endl;
}
int main()
{
  test1();
  return 0;
}


transform


transform(beg1,end1,beg2, _func)


beg1是原容器的其实迭代器,end1是的结束迭代器,beg2是目标容器的开始迭代器,_func在这里为函数或者函数对象,可以在搬运途中对搬运的元素进行操作,比如加多少减多少,这里有一个需要注意的地方,目标i容器要记得提前开辟好容器空间,保证能放下原容器的元素

使用:


#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>
int add(int a)//对拷贝过来的数进行加一百的操作
{
  return a += 100;
}
void print(int a)
{
  cout << a << " ";
}
void test1()
{
  vector<int> v;
  for (int i = 0; i < 10; ++i)
  {
  v.push_back(i);
  }
  for_each(v. begin(), v.end(), print);
  cout << endl;
  vector<int> v1;
  v1.resize(v.size());//保证可以放下原容器
  transform(v.begin(), v.end(), v1.begin(), add);
  for_each(v1.begin(), v1.end(), print);
  cout << endl;
}
int main()
{
  test1();
  return 0;
}

0eacb84100b54626af849e6b562bf92a.png


下一座石碑


这座石碑倒下了,露出了下一座石碑…


😘预知后事如何,关注新专栏,和我一起征服C++这座巨塔

🚀专栏:C++爬塔日记

🙉都看到这里了,留下你们的👍点赞+⭐收藏+📋评论吧🙉


相关文章
|
3天前
|
算法
【算法与数据结构】二叉树(前中后)序遍历2
【算法与数据结构】二叉树(前中后)序遍历
|
3天前
|
存储 算法
【数据结构与算法】8.二叉树的基本概念|前序遍历|中序遍历|后序遍历
【数据结构与算法】8.二叉树的基本概念|前序遍历|中序遍历|后序遍历
|
3天前
|
存储 算法 程序员
C++从入门到精通:2.2.1标准库与STL容器算法深度解析
C++从入门到精通:2.2.1标准库与STL容器算法深度解析
|
3天前
|
存储 算法 JavaScript
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)(二)
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)
35 0
|
3天前
|
算法 搜索推荐 程序员
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)(一)
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)
41 0
|
3天前
|
机器学习/深度学习 算法 Java
递归算法还有哪些是你不知道的----【探讨Java经典遍历问题和面试题】
递归算法还有哪些是你不知道的----【探讨Java经典遍历问题和面试题】
35 1
|
3天前
|
存储 算法 搜索推荐
C++模板与STL【常用算法】
C++模板与STL【常用算法】
|
3天前
|
算法 C++ 容器
【C++】 --- STL常用算法总结(三)
【C++】 --- STL常用算法总结
28 0
|
3天前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
1天前
|
算法
MATLAB|【免费】融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型
这段内容介绍了一个使用改进的麻雀搜索算法优化CNN-BiLSTM模型进行多输入单输出预测的程序。程序通过融合正余弦和柯西变异提升算法性能,主要优化学习率、正则化参数及BiLSTM的隐层神经元数量。它利用一段简单的风速数据进行演示,对比了改进算法与粒子群、灰狼算法的优化效果。代码包括数据导入、预处理和模型构建部分,并展示了优化前后的效果。建议使用高版本MATLAB运行。