STL常用的算法概述

算法概述算法概述常用遍历算法for_each练习代码:transform练习代码:常用查找算法find算法案例常用排序算法常用拷贝和替换算法常用算数生成算法常用集合算法算法概述算法主要是由头文件< algorithm > < functional > < numeric >组成。< algorithm>是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等…< numeric>体积很小,只
摘要由CSDN通过智能技术生成

算法概述

算法主要是由头文件< algorithm > < functional > < numeric >组成。

< algorithm >是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等…

< numeric >体积很小,只包括在几个序列容器上进行的简单运算的模板函数.

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

STL算法分为:质变算法非质变算法

所有的STL算法都作用在由迭代器[first,end)所标示出来的区间上,
质变算法,是指运算过程中会改变区间内的(迭代器所指)的元素内容。比如,拷贝(copy)、互换(swap)、替换(replace)、填写(fill)、删除(remove)、排序(sort)等算法都属于此类。
非质变算法是指是指在运算过程中不会区间内(迭代器所指)的元素内容,比如查找(find)、计数(count)、遍历(for_each)、寻找极值(max,min)等,都属于此类。但是如果你在for_each遍历每个元素的时候试图应用一个会改变元素内容的仿函数,那么元素当然也会改变。

常用遍历算法

for_each练习代码:

基本正向遍历和逆向遍历
for_each绑定参数输出
for_each修改容器元素
for_each返回值

//for_each正向遍历 反向遍历
struct print01{
   
	void operator()(int v){
   
		cout << v << " ";
	}
};
void test01(){
   
	
	vector<int> v;
	for (int i = 0; i < 10;i++){
   
		v.push_back(rand() % 100);
	}

	//正向遍历
	for_each(v.begin(), v.end(), print01());
	cout << endl;
	//反向遍历
	for_each(v.rbegin(), v.rend(), print01());
	cout << endl;
}
//for_each算法 绑定参数
//将容器中的元素加上100 再输出
struct print2 : public binary_function<int,int,void>{
   
	void operator()(int v1,int v2) const{
   
		cout << v1+v2 << " ";
	}
};
void print21(int v1, int v2){
   
	cout << v1 + v2 << " ";
}
void test02(){
   
	
	vector<int> v;
	for (int i = 0; i < 10; i++){
   
		v.push_back(rand() % 100);
	}

	for_each(v.begin(), v.end(), print01
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值