CSTL算法篇
算法基础算法概述
算法部分主要由头文件,,组成.
是所有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; }
苹果允许员工公开讨论薪资,有些秘密,终究还是守不住未来在硅谷,和同事交流彼此的薪水将成为一件正常的事情。今年9月,硅星人报道了由一群苹果员工发起的,旨在暴露公司内种族主义性别歧视不平等恐吓骚扰职场PUA等问题,促进职场平等的App
有什么网站可以得到不同的资源,像吾爱破解一样?Hi,我是阿詹,深夜来分享一波资源网站,我按类别说,绝对有你想要的资源!需要的都可以私信回复041。一电影资源推荐电影天堂,电影资源超级多,而且都是高清或者超清的,每次要看电影我都
XBOX喜迎20周年!欧美大佬讲述XBOX诞生故事,如何改变游戏业?11月15日,是首代Xbox诞生的20周年纪念日,作为主机御三家里至关重要的一方,微软给主机游戏行业带来的影响是不容忽视的。Xbox成形在1999年底一次采访时提到主机之后,比尔盖
苹果iPhone12努比亚红魔6R参数报价对比手机机型苹果iPhone12努比亚红魔6R最新价格6299元即将上市屏幕尺寸6。1英寸不支持或参数暂缺屏幕类型OLEDOLED分辨率25321170不支持或参数暂缺像素460ppi
首艘电动无人驾驶货轮亮相挪威科技日报北京11月22日电(记者刘霞)零排放且零船员的船舶或将很快实现!据物理学家组织网近日报道,世界上第一艘全自动无人驾驶货轮在挪威亮相,这是海洋运输业在减排领域迈出的重要一步。
柳传志满门忠烈滴滴安全泄密事件,滴滴总裁柳青就是柳传志的女儿,柳青的爷爷,柳传志的父亲柳谷书,晚年所做的主要事情,就是帮助外国企业,维护在中国的知识产权,因此,常常代表外国公司起诉中国人和中国公
英特尔践行ESG理念推动可持续发展当今世界,放眼全球,当科学技术经济社会快速向前发展的同时,人类社会也面临着诸多严峻的生态挑战,如气候变暖资源短缺水污染大气污染等等,无一不在威胁人类健康,并对人类构建可持续发展的社
科技创新制胜未来的关键变量讲武堂习近平主席指出在激烈的国际竞争中,惟创新者进,惟创新者强,惟创新者胜。当今世界正经历百年未有之大变局,科技创新是其中一个关键变量,国家对战略科技支撑的需求比以往任何时期都更加
柳传志和联想到底有没有问题?有没有问题,不查什么问题没有,一旦查了,问题很严重,现在的问题是很多势力在较量,司马先生这么一弄,想捂住这个可能有点难了有没问题,自然有执法执纪部门作出结论。但是,有些问题还是要清
提供政务舆情服务的公司有哪些?公司一乐思软件这是一家主打为政务单位提供舆情数据监测与分析服务的公司,其产品乐思舆情监测云服务,采用SaaS模式,能够实现全媒体信息监测。公司二中科点击这是一家舆情监测与数据分析服
穹游博物馆语音导览器参观讲解真方便领导来公司参观时,需要采购什么样的讲解器最为合适呢?别担心,穹游品牌无线讲解器来帮你。趣由品牌无线讲解器采用了一体式设计,无线耳麦,内置天线。外观采用了曜石黑,炫酷又大气。小巧又精