首页 > 编程语言 >C++ STL算法篇@@

C++ STL算法篇@@

时间:2023-08-17 18:23:19浏览次数:52  
标签:函数 STL v2 C++ 对象 算法 include

算法基础算法概述

算法部分主要由头文件,,组成.

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

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

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

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

STL算法分类

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

功能

非可变训练算法

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

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

可变训练算法

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

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

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

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

算法中函数对象和谓词

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

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

示例代码

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

private:
	int n;

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

private:
	T pisor;
};

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

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

	vector v1;
	v1.push_back(1);
	v1.push_back(3);
	v1.push_back(5);
	for_each(v1.begin(), v1.end(), FunShowElemt());//匿名函数对象
	cout << endl;
	for_each(v1.begin(), v1.end(), FunShowElemt2());//通过回调函数 谁使用for_each 谁去填写回调函数的入口地址
	ShowElem 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;
}

标签:函数,STL,v2,C++,对象,算法,include
From: https://www.cnblogs.com/77cxw/p/17638457.html

相关文章

  • 在C++中实现多线程异步TCP消息发送
    本文主要解释了在C++中如何实现一个多线程,异步发送TCP消息的系统。我们将会用到C++的标准库和Boost.Asio库。基础知识TCP(TransmissionControlProtocol):是一种面向连接的、可靠的、基于字节流的通信协议。它在两个网络节点之间创建一个稳定的连接,以便可以交换字节流。多线程编程:......
  • 恒温碗语音芯片,具备数码管驱动与温度传感算法,NV040C-S8
    近年来,随着科技的飞速发展,智能家居产品已然成为了现代生活的一部分,为人们的生活带来了更多的便利和舒适。在这个不断演进的领域中,恒温碗多功能语音芯片——NV040C-S8成为众多厂商的首选,为智能家居领域注入了全新的交互能力与智能化体验。一芯多能,资源丰富恒温碗多功能语音芯片NV040......
  • c/c++ 程序错误记录
     //返回类型为int,正常执行代码就会没有返回值,引起段错误inttest(int**a)//错误,引起段错误,且没有打印输出信息。{try{    *a=newint[10];  }catch(constchar*msg){    fprintf(stderr,"%s",msg);    return-1;  }}......
  • 有关C++哈希函数的常用形式,具体解释见注释
    #pragmaonce#include<unordered_set>#include<unordered_map>namespacehash_function{ //将参数传入 template<typename...Types> inlinesize_thash_val(constTypes&...args){ size_tseed=0; hash_val(seed,args...); returnseed;......
  • 算法学习笔记-逆元
    前言:还记得小学学的倒数吗?倒数的定义大概是若\(ax=1\),则称\(x\)为\(a\)的倒数。而逆元,其实可以看做在模意义下的倒数。也就是\(ax\equiv1\pmodp\),且\(a\)与\(p\)互质,则称\(x\)为\(a\)在模\(p\)意义下的乘法逆元,记作\(a^{-1}\)。本文就将简要介绍求逆元的......
  • 数组下标中值求取算法
    问题解法一1.先计算出所需区间的大小10-2=82.计算当前区间的中值8/2=43.用区间起点加上中值,即为真实的中间值2+4=6完整公式是(end-start)/2+start解法二1.前置扩充所需区间start大小2.后置扩充所需区间start大小3.新的区间大小是12,那么中间值就是6完整公式是(start+e......
  • 【航迹】基于MN逻辑算法实现航迹关联和卡尔曼滤波外推附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 路径规划算法:基于绯鲵鲣算法的机器人路径规划算法- 附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 9.1 C++ STL 排序、算数与集合
    C++STL(StandardTemplateLibrary)是C++标准库中的一个重要组成部分,提供了丰富的模板函数和容器,用于处理各种数据结构和算法。在STL中,排序、算数和集合算法是常用的功能,可以帮助我们对数据进行排序、统计、查找以及集合操作等。STL提供的这些算法,能够满足各种数据处理和分析的需求......
  • 10.1 C++ STL 模板适配与迭代器
    STL(StandardTemplateLibrary)标准模板库提供了模板适配器和迭代器等重要概念,为开发者提供了高效、灵活和方便的编程工具。模板适配器是指一组模板类或函数,它们提供一种适配机制,使得现有的模板能够适应新的需求。而迭代器则是STL中的令一种重要的概念,它是一个抽象化的数据访问机制,......