STL-常用遍历算法

举报
莫浅子 发表于 2022/12/09 11:00:58 2022/12/09
【摘要】 ​ 目录1.for_each功能描述函数原型 2.transform功能描述函数原型1.for_each功能描述实现容器遍历函数原型for_each(itertor beg,iterator end,_func);//遍历算法 遍历容器元素//beg 开始迭代器//end 结束迭代器//_func函数或者函数对象代码#include <iostream>using namespace std...

 目录

1.for_each

功能描述

函数原型

 2.transform

功能描述

函数原型




1.for_each

功能描述

实现容器遍历

函数原型

for_each(itertor beg,iterator end,_func);

//遍历算法 遍历容器元素

//beg 开始迭代器

//end 结束迭代器

//_func函数或者函数对象

代码

#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 函数或者函数对象

代码 

#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();
}

结果

编辑



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。