首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >STL-常用遍历算法

STL-常用遍历算法

作者头像
莫浅子
发布2022-12-09 14:44:11
发布2022-12-09 14:44:11
3530
举报

目录

1.for_each

功能描述

函数原型

 2.transform

功能描述

函数原型


1.for_each

功能描述

实现容器遍历

函数原型

for_each(itertor beg,iterator end,_func); //遍历算法 遍历容器元素 //beg 开始迭代器 //end 结束迭代器 //_func函数或者函数对象

代码

代码语言:javascript
复制
#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>

//普通函数
void print01 (int val)
{
	cout<< val << " ";
} 

//放寒暑
class print02
{
public:
	void operator()(int val)
	{
		cout<< val << " "; 
	}
};
void test01()
{
   vector<int>v;
   for(int i = 0;i < 10;i ++)
   {
   	  v.push_back(i);
   }
   for_each(v.begin(),v.end(),print01);
   cout<<endl;
   for_each(v.begin(),v.end(),print02());
   cout<<endl; 
    
} 
int main()
{
	test01();
} 

代码

 2.transform

功能描述

搬运容器到另一个容器

函数原型

transform (iterator beg1,iterator endl, iterator beg2,_func); //beg1 源容器开始迭代器 //end1 源容器结束迭代器 //beg2 目标函数开始迭代器 //_func 函数或者函数对象

代码 

代码语言:javascript
复制
#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>

class Transform
{
public:
    int operator()(int v)
	{
		return  v;
	}	
};
class MyPrint{
	public:
		void operator()(int val)
		{
			cout<< val <<" ";
		}
};
void test01()
{
	vector<int>v;
	for(int i = 0;i < 10;i ++)
    {
   	  v.push_back(i);
    }
    vector<int>vTarget;   //目标函数
    vTarget.resize(v.size());   //目标容器要提前开辟空间 
	transform(v.begin(), v.end(), vTarget.begin(),Transform());
	
	for_each(vTarget.begin(),vTarget.end(), MyPrint());
	cout<<endl; 
	
}
int main()
{
	test01();
}

结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.for_each
    • 功能描述
    • 函数原型
  •  2.transform
    • 功能描述
    • 函数原型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档