algorithm头文件下的常用函数
algorithm头文件常用高效函数
- max()
max(a, b)返回a和b中的最大值,参数必须是两个(可以是浮点型)。
1 #include <iostream>
2 #include <algorithm>
3 using namespace std;
4 int main()
5 {
6 int a=3,b=6,c=8;
7 cout<<a<<" "<<b<<"最大值为"<<max(a,b)<<endl;
8 cout<<a<<" "<<b<<" "<<c<<"最大值为"<<max(a,max(b,c))<<endl; //可以嵌套使用
9 return 0;
10 }
- min()
基本用法同max(),不同的是min()求的是最小值。
1 #include <iostream>
2 #include <algorithm>
3 using namespace std;
4 int main()
5 {
6 int a=3,b=6,c=8;
7 cout<<a<<" "<<b<<"最小值为"<<min(a,b)<<endl;
8 cout<<a<<" "<<b<<" "<<c<<"最小值为"<<min(a,min(b,c))<<endl; //可以嵌套使用
9 return 0;
10 }
- swap()
swap(a, b)用来交换a和b的值。
1 #include <iostream>
2 #include <algorithm>
3 using namespace std;
4 int main()
5 {
6 int a=3,b=6;
7 cout<<a<<" "<<b<<endl; //交换前
8 swap(a,b);
9 cout<<a<<" "<<b<<endl; //交换后
10 return 0;
11 }
输出结果:
3 6
6 3
- reverse()
reverse(it1, it2)可以将数组指针在[it1, it2)之间的元素或容器的迭代器在[it1, it2)范围内的元素进行反转。
1 #include <iostream>
2 #include <algorithm>
3 using namespace std;
4 int main()
5 {
6 int a[5] = {1,2,3,4,5};
7 reverse(a,a+3); //将a[0]-a[2]反转
8 for(int i=0;i<5;i++){
9 cout<<a[i]<<" ";
10 }
11 return 0;
12 }
输出结果:
3 2 1 4 5
- next_permutation()
next_permutation()用来求一个全排列的下一个序列。
例如,n=3的全排列
123
132
213
231
312
321
这样132的下一个序列就是213。
1 #include <iostream>
2 #include <algorithm>
3 using namespace std;
4 int main()
5 {
6 int a[3] = {1,2,3};
7 do{
8 cout<<a[0]<<a[1]<<a[2]<<endl;
9 }while(next_permutation(a,a+3));
10 return 0;
11 }
输出结果:
123
132
213
231
312
321
- fill()
fill()可以把数组或容器中的某一段区间赋值为某个相同的值,与C语言中常用的memset不同的是,这里的赋值可以是数组类型对应范围中的任意值。
1 #include <iostream>
2 #include <algorithm>
3 using namespace std;
4 int main()
5 {
6 int a[5] = {1,2,3,4,5};
7 fill(a,a+5,6); //将数组全部元素赋值为6
8 for(int i=0;i<5;i++){
9 cout<<a[i]<<" ";
10 }
11 return 0;
12 }
输出结果:
6 6 6 6 6
- sort()
sort()是常用的排序函数,效率较高,使用灵活方便。
使用sort函数的格式为
sort(首元素地址(必填), 尾元素地址的下一个地址(必填), 比较函数(非必填));
sort函数默认为递增排序。
1 #include <iostream>
2 #include <algorithm>
3 using namespace std;
4 int main()
5 {
6 int a[8] = {5,3,2,1,4,9,8,0};
7 sort(a,a+4); //将a[0]-a[3]进行递增排序
8 for(int i=0;i<8;i++){
9 cout<<a[i]<<" ";
10 }
11 return 0;
12 }
输出结果:
1 2 3 5 4 9 8 0
相应的,sort函数还可以对其它类型的数组进行排序(如float、double、char),对char型数组排序时默认为字典序。
既然sort函数默认为递增排序,那我们如何实现递减排序呢?这时就需要用到我们的比较函数了。
实现比较函数
从上面的例子可以看出,如果sort函数中的比较函数不填,则默认按照递增排序,下面的例子我们使用比较函数来实现递减排序。
1 #include <iostream>
2 #include <algorithm>
3 using namespace std;
4 bool cmp(int a,int b){
5 return a>b;
6 }
7 int main()
8 {
9 int a[8] = {5,3,2,1,4,9,8,0};
10 sort(a,a+4,cmp); //将a[0]-a[3]进行递减排序
11 for(int i=0;i<8;i++){
12 cout<<a[i]<<" ";
13 }
14 return 0;
15 }
输出结果:
5 3 2 1 4 9 8 0
可以看出,通过添加了一个比较函数cmp(函数名字可以自行声明),我们实现了递减排序。cmp函数中return a>b规定了sort需要从大到小排序。相应的,如果写成return a<b,则从小到大排序。
algorithm头文件下还有很多方便我们编程的函数,这里只是举了几个平时写算法时经常用到的一些简易函数,也是算法竞赛中经常使用的几个函数。相信通过熟练使用这些函数,一定会提高我们编写算法的效率。
algorithm头文件下的常用函数的更多相关文章
- STL algorithm 头文件下的常用函数
algorithm 头文件下的常用函数 1. max(), min()和abs() //max(x,y)和min(x,y)分别返回x和y中的最大值和最小值,且参数必须时两个(可以是浮点数) //返回3 ...
- 头文件<cmath>中常用函数
<cmath>里面有很多数学函数,下面说一下常用的一些函数吧:直接把函数原型给了出来,用的时候注意参数 先说一下,c++自身是没有四舍五入函数round()的,若果你要用到的话,可以自己写 ...
- algorithm下的常用函数
algorithm下的常用函数 max(),min(),abs() max(x,y)返回x和y中最小的数字 min(x,y)返回x和y中最大的数字 abs(x)返回x的绝对值,注意x应当是整数,如果是 ...
- linux设备驱动程序该添加哪些头文件以及驱动常用头文件介绍(转)
原文链接:http://blog.chinaunix.net/uid-22609852-id-3506475.html 驱动常用头文件介绍 #include <linux/***.h> 是 ...
- 【Linux 应用编程】文件IO操作 - 常用函数
Linux 系统中的各种输入输出,设计为"一切皆文件".各种各样的IO统一用文件形式访问. 文件类型及基本操作 Linux 系统的大部分系统资源都以文件形式提供给用户读写.这些文件 ...
- pandas 学习(二)—— pandas 下的常用函数
import pandas as pd; 1. 数据处理函数 pd.isnull()/pd.notnull():用于检测缺失数据: 2. 辅助函数 pd.to_datetime() 3. Series ...
- c++标准模板库algorithm头文件中accumulate算法的代码
template <typename T>T algorithm(T* start, T* end, T total)//把[start, end)标记范围内所有元素累加到total中{ ...
- algorithm与numeric的一些常用函数
numeric中的accumulated的基本用法: 来自:https://blog.csdn.net/u011499425/article/details/52756242 #include < ...
- PHP_File文件操作简单常用函数
php测试文件 <?php header("Content-type:text/html;charest=utf-8");$fileDir='Upload/File/cont ...
随机推荐
- Python脚本破解Linux口令(crypt模块)
环境 Kali Linux ,python版本2.7.13 . 我们利用Linux系统中的 crypt 模块模拟了Linux系统中用户密码的加密,在Windows中是不存在这个库的. 在Linux系统 ...
- Swift系列三 - 函数
函数在任何语言中都是存在的,Swift中函数更加灵活. 一.函数的定义 1.1. 有返回值(形参默认是let,也只能是let) func pi() -> Double { return 3.14 ...
- TCP的握手和挥手
三次握手 三次握手具体过程是什么? 客户端发送一个数据包 将SYN置成1,表示希望建立连接 这个包中的序列号是X 服务器收到客户端发来的数据包 通过SYN得知这是一个建立连接的请求 于是发送一个响应包 ...
- 转: inline关键字使用
1.inline用在函数声明时,还是函数定义时?还是两边都加? 首先,内联函数声明和定义最好在同一个文件中,其它的情况没有实用上的意义. 只要在同一个文件中,声明和定义至少其一加"inlin ...
- 老vue项目webpack3升级到webpack5全过程记录(一)
背景 19年新建的vue项目,使用的是webpack3,随着项目的积累,组件的增多导致本地构建,线上打包等操作速度极慢,非常影响开发效率和部署效率,基于此问题,本次对webpack及相关插件进行了优化 ...
- not full 和 default
create table t16( id int, name char(6), sex enum('male','female') not null default 'male'); insert i ...
- [bug] VMvare 虚拟机磁盘空间耗尽
问题 VMvare虚拟机文件默认创建在C盘,装大程序的时,空间用尽就会报错,此时补救的办法是把虚拟机文件复制到空间足够的盘,再重新打开 最好一开始就选再有足够空间的盘里创建虚拟机 参考 https:/ ...
- [刷题] 102 Binary Tree Level Order Traversal
要求 对二叉树进行层序遍历 实现 返回结果为双重向量,对应树的每层元素 队列的每个元素是一个pair对,存树节点和其所在的层信息 1 Definition for a binary tree node ...
- sosreport命令 然后diff 正常的操作系统例如centos
nux学习笔记:有用的linux命令 发表于 2018-06-25 | 分类于 linux| 字数统计: 1,269 | 阅读时长 ≈ 6 写在前面 这着笔记,整理一些网上搜集到有用的linu ...
- ELK日志收集分析平台部署使用
一.ELK介绍 开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成: 1.ElasticSearch是一个基于 ...