首页 > 编程语言 >16.STL-常用遍历算法

16.STL-常用遍历算法

时间:2024-09-02 16:28:59浏览次数:7  
标签:begin 遍历 end cout val 16 STL int include


  • 常用遍历算法
  • for_each
  • 用于遍历
  • 有返回值
  • 可以绑定参数进行输出
  • transform
  • 搬运
  • 注意:目标容器要有容量
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
#include <vector>
#include <algorithm>
#include <functional>

class MyPrint
{
public:
	void operator()(int val)
	{
		cout << val << endl;
		m_Count++;
	}

	int m_Count = 0;
};

//for_each  用于遍历
//有返回值的
void test01()
{
	vector<int>v;
	for (int i = 0; i < 10;i++)
	{
		v.push_back(i);
	}

	MyPrint print = for_each(v.begin(), v.end(), MyPrint());

	cout << "print.count = " << print.m_Count << endl;

}

//for_each可以绑定参数输出
class MyPrint2 :public binary_function<int,int,void>
{
public:
	void operator()(int val , int start) const
	{
		cout << val << endl;
		
	}

};

void test02()
{
	vector<int>v;
	for (int i = 0; i < 10; i++)
	{
		v.push_back(i);
	}

	for_each(v.begin(), v.end(),  bind2nd( MyPrint2(), 1000));

}


//transform算法 将指定容器区间元素搬运到另一容器中
class MyTransform
{
public:
	int operator()(int val)
	{	
		return val + 10000;
	}
};
void test03()
{
	vector<int>v;
	for (int i = 0; i < 10; i++)
	{
		v.push_back(i);
	}



	vector<int>v2;
	v2.resize(v.size());

	transform(v.begin(), v.end(), v2.begin(), MyTransform());

	for_each(v2.begin(), v2.end(), [](int val){cout << val << " "; });

}

int main(){
	//test01();
	//test02();
	test03();


	system("pause");
	return EXIT_SUCCESS;
}


标签:begin,遍历,end,cout,val,16,STL,int,include
From: https://blog.51cto.com/zaishu/11898890

相关文章

  • 21.STL-常用集合算法
    常用集合算法set_intersection算法求两个set集合的交集set_union算法求两个set集合的并集set_difference算法求两个set集合的差集注意:两个集合必须是有序序列#define_CRT_SECURE_NO_WARNINGS#include<iostream>usingnamespacestd;#include<vector>#include<algori......
  • https://www.bilibili.com/video/BV1Bg41167W5/ 突破英语听力口语瓶颈20|掌握5种弱读,不
    functionwordsArticles(the,a/an)Auxiliaries(can,must,might,will)Demonstratives(this,these,that,those)Quantifiers(many,few,little,some)Prepositions(on,with,to,from)Pronouns(he,she,they,we)Conjunctions(and,but,or,but) 1.ReducingConjunction弱读连词......
  • python入门每日一练2023/2/16
    python入门每日一练,可以提高您的python水平,今天是2月16日,上一课的答案是print(1)print("执行结束")while1==1:print(1)if5==1:breakprint("执行结束")如何简化这个代码?(难度★☆☆☆☆)......
  • 20240902_162002 mysql 填空题 数据类型
    定义一个int类型的列,名为ageageint定义一个无符号的int类型的列,名为scorescoreintunsigned定义一个单精度小数类型的列,名为weightweightfloat定义一个双精度小数类型的列,名为weightweightdouble定义一个小数列,要求总长度为5,小数部分为2,列名为weightweightdecimal(5,......
  • 1. STL-STL概论,STL初识
    STL概论STL六大组件容器、算法、迭代器、仿函数、适配器、空间配置器STL优点内建在C++编译器中,不需要安装额外内容不需要了解具体实现内容,只要熟练运用即可高复用,可移植,高性能容器划分序列式容器关联式容器有个key起到索引作用算法质变算法非质变算法STL......
  • FMC子卡设计资料:165-2路万兆光纤SFP+ FMC子卡模块
    1.概述该板卡是基于kc705和ml605的fmc10g万兆光纤扩展板设计。SFP+(10GigabitSmallFormFactorPluggable)是一种可热插拔的,独立于通信协议的光学收发器,通常传输光的波长是850nm,1310nm或1550nm,用于10Gbps的SONET/SDH,光纤通道,gigabitEthernet,10gigabitEthernet和......
  • CF 1996 E. Decode(*1600) 思维+前缀和
    CF1996E.Decode(*1600)思维+前缀和题目链接题意:给你一个长度为\(n\)的二进制字符串,求出所有的子区间的所有满足\(0\)的个数等于\(1\)的个数的子区间个数之和。思路:首先,求一段区间是否满足\(0\)的数量是否等于\(1\)的个数,是非常经典的做法,我们只需要维护一个数......
  • CF 2004 D. Colored Portals (*1600) 二分
    CF2004D.ColoredPortals(*1600)二分题目链接题意:有\(n\)座城市,编号从\(1\)到\(n\)。传送门一共有\(4\)种颜色,每个城市有两种不同颜色的传送门。若城市\(i\)和城市\(j\)有相同颜色的传送门。那么就可以花费\(|i-j|\)枚金币从城市\(i\)到城市\(j\)。\(q\)......
  • 【C++】C++STL 揭秘:Strng背后的底层逻辑
    C++语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C++相关特性类和对象-上篇在上篇介绍string类的使用与理解,本篇将为大家来带关于string的底层实现逻辑,当然这不是一定库里面的实现逻辑。我们设计一个string类是为了在使用string类相关......
  • 二叉树的遍历
    先序遍历usingnamespacestd;//定义二叉树节点结构体structTreeNode{charData;//节点的数据TreeNode*left;//左子节点TreeNode*right;//右子节点//构造函数TreeNode(chardata,TreeNode*leftChild=nullptr,T......