您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

C++ STL算法篇@@

时间:2021-08-11 10:11:22  来源:  作者:小羊爱学习

算法基础算法概述

算法部分主要由头文件<alogrithm>,<numeric>,<funcatioal>组成.

<alogrithm>是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较交换替换便利操作复制修改反转排序合并等等.

<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作

<funcatioal>定义了一些模板类,用以声明函数对象

STL提供了大量实现算法的模板函数。只要我们熟悉了s te l之后,许多代码可以被大大化解,只需要通过调用一两个算法模板就可以完成所需要的功能,从而大大地提高效率

STL算法分类

STL中算法分为操作对象直接改变容器的内容,将原容器的内容复制一份,修改其副本,然后传回该副本

功能

非可变训练算法

指不直接修改其所操作的容器内容的算法技术

算法搜索,,算法比较,算法可变,

可变训练算法

可以修改它们所操作的容器内容的算法

删除算法,修改算法,排序算法.

排序算法包括对序列进行排序和合并的算法搜索算法以及有序。序列上的集合操作。

数值算法对容器内容进行数值计算

算法中函数对象和谓词

重载函数调用操作符的a级对象常称为函数对象。即他们是行为类似函数的对象,一个类对象表现出一个函数的特征,就是通过对象名加参数列表的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待。在标准库中,函数对象被广泛地使用以获得弹性标准库中的很多算法,都可以使用函数对象或者函数来作为自定的回调行为。

一元函数对象函数参数一个。二元函数对象函数参数两个,一元谓词,函数对象一个函数返回值是布尔类型,可以作为一个判断是谓词可以使一个仿函数,也可以是一个回调函数。 二元谓词。函数参数两个函数返回值是布尔类型。

示例代码

#include<IOStream>
using namespace std;
#include"vector"
#include"map"
#include"string"
#include"list"
#include"set"
#include"functional"
//函数对象 
template<typename T>
class ShowElem
{
public:
	ShowElem()
	{
		n - 0;
	}
	void operator()(T &t)
	{
		n++;
		cout << t << " ";
	}
	void printN()
	{
		cout << "n:" << endl;
	}

private:
	int n;

};
class Isdiv
{
public:
	Isdiv(const T &divisor);
	{
		this->divisor = divisor;
	}
	bool operator()(T &t)
	{
		return(t%divisor==0)
	}
	

private:
	T divisor;
};

void main33()
{
	vector<int> v2;
	for (int i = 0; i < 33; i++)
	{
		v2.push_back(i);
	}
	int a = 4;
	Isdiv<int> myDiv(a);
	vector<int>::iterator it;
	it = find_if(v2.begin(), v2.end(), myDiv<int>(4));
	if (it == v2.end())
	{
		cout << "容器中没有值是4的元素" << endl;
	}
	else
	{
		cout << "第一个是被4整除的元素是:" << *it << endl;
	}
}
template<typename T>
//函数模板
void FunShowElemt(T &t)
{
	cout << t << endl;
}
//普通函数
void FunShowElemt(T &t)
{
	cout << t << endl;
}
void main11()
{
	int a = 10;
	ShowElemt<int> showElemt;
	showElemt(a);//仿函数
	FunShowElemt<int>(a);
	FunShowElemt2(a);

}
//函数对象是属于类对象的概念,能突破函数的概念 能保持调用状态信息
//for_each算法返回的是什么,迭代器?值?
void main22()
{

	vector<int> v1;
	v1.push_back(1);
	v1.push_back(3);
	v1.push_back(5);
	for_each(v1.begin(), v1.end(), FunShowElemt<int>());//匿名函数对象
	cout << endl;
	for_each(v1.begin(), v1.end(), FunShowElemt2());//通过回调函数 谁使用for_each 谁去填写回调函数的入口地址
	ShowElem<int> shoow1;
	for_each(v1.begin(), v1.end(), show1)//for_each算法 函数对象的传递 是元素的值传递,不是引用传递
		showl.printN();
	cout<<"通过for_each算法的返回值看调用的次数" << endl;
	showl = for_each(v1.begin(), v1.end(), show1);

}
void main()
{
	main11();
	main22();


	cout << "hello..." << endl;
	system("pause");
	return;
}


Tags:STL算法   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
算法基础算法概述算法部分主要由头文件<alogrithm>,<numeric>,<funcatioal>组成.<alogrithm>是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较交换替换便利操作...【详细内容】
2021-08-11  Tags: STL算法  点击:(73)  评论:(0)  加入收藏
▌简易百科推荐
前言Kafka 中有很多延时操作,比如对于耗时的网络请求(比如 Produce 是等待 ISR 副本复制成功)会被封装成 DelayOperation 进行延迟处理操作,防止阻塞 Kafka请求处理线程。Kafka...【详细内容】
2021-12-27  Java技术那些事    Tags:时间轮   点击:(1)  评论:(0)  加入收藏
博雯 发自 凹非寺量子位 报道 | 公众号 QbitAI在炼丹过程中,为了减少训练所需资源,MLer有时会将大型复杂的大模型“蒸馏”为较小的模型,同时还要保证与压缩前相当的结果。这就...【详细内容】
2021-12-24  量子位    Tags:蒸馏法   点击:(9)  评论:(0)  加入收藏
分稀疏重建和稠密重建两类:稀疏重建:使用RGB相机SLAMOrb-slam,Orb-slam2,orb-slam3:工程地址在: http://webdiis.unizar.es/~raulmur/orbslam/ DSO(Direct Sparse Odometry)因为...【详细内容】
2021-12-23  老师明明可以靠颜值    Tags:算法   点击:(7)  评论:(0)  加入收藏
1. 基本概念希尔排序又叫递减增量排序算法,它是在直接插入排序算法的基础上进行改进而来的,综合来说它的效率肯定是要高于直接插入排序算法的;希尔排序是一种不稳定的排序算法...【详细内容】
2021-12-22  青石野草    Tags:希尔排序   点击:(6)  评论:(0)  加入收藏
ROP是一种技巧,我们对execve函数进行拼凑来进行system /bin/sh。栈迁移的特征是溢出0x10个字符,在本次getshell中,还碰到了如何利用printf函数来进行canary的泄露。ROP+栈迁移...【详细内容】
2021-12-15  星云博创    Tags:栈迁移   点击:(19)  评论:(0)  加入收藏
一、什么是冒泡排序1.1、文字描述冒泡排序是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地...【详细内容】
2021-12-15    晓掌柜丶韶华  Tags:排序算法   点击:(16)  评论:(0)  加入收藏
在了解golang的map之前,我们需要了解哈希这个概念。哈希表,又称散列表(Hash table),是根据键(key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算出一个键值的函数,将...【详细内容】
2021-12-07  一棵梧桐木    Tags:哈希表   点击:(13)  评论:(0)  加入收藏
前面文章在谈论分布式唯一ID生成的时候,有提到雪花算法,这一次,我们详细点讲解,只讲它。SnowFlake算法据国家大气研究中心的查尔斯&middot;奈特称,一般的雪花大约由10^19个水分子...【详细内容】
2021-11-17  小心程序猿QAQ    Tags:雪花算法   点击:(24)  评论:(0)  加入收藏
导读:在大数据时代,对复杂数据结构中的各数据项进行有效的排序和查找的能力非常重要,因为很多现代算法都需要用到它。在为数据恰当选择排序和查找策略时,需要根据数据的规模和类型进行判断。尽管不同策略最终得到的结果完...【详细内容】
2021-11-04  华章科技    Tags:排序算法   点击:(37)  评论:(0)  加入收藏
这是我在网上找的资源的一个总结,会先给出一个我看了觉得还行的关于算法的讲解,再配上实现的代码: Original author: Bill_Hoo Original Address: http://blog.sina.com.cn/s/bl...【详细内容】
2021-11-04  有AI野心的电工和码农    Tags: KMP算法   点击:(36)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条