algorithm头文件的一些常用函数

首先当然要包含algorithm头文件 :#include <algorithm>

  • max(x,y) min(x,y) 参数可以是浮点数
  • abs(x) x必须是整数 如果x是浮点数则要用math头文件下的fabs(x)
  • swap(x,y) 交换x和y
  • reverse(it,it2) it和it2可以是数组指针,也可以是容器的迭代器 注意的是翻转范围为:[it,it2)
  • next_permutation() 给出一个序列在全排列中的下一个序列
1 int box[3]={1,2,3};
2 do{
3     for(int i=0;i<3;++i)
4         cout << box[i] << ‘ ‘;
5     cout << endl;
6 }while(next_permutation(box,box+3));
  • fill() 与memset不同,fill赋值可以是数组类型对应范围中的任意值,因为string.h头文件中的memset中是按字节来赋值,因此往往只能赋值0或者-1而且速度比fill速度快
1 1 int box[5];
2 2 fill(box,box+5,123);
3 3 for(int i=0;i<5;++i)
4 4     cout << box[i] << ‘ ‘;
5 5 cout << endl;
  • lower_bound(first,last,value)、upper_bound(first,last,value),他们都要在一个有序数组或有序容器中使用,lower_bound在[first,last)中找第一个值大于等于value的元素的位置,upper_bound在[first,last)中找第一个值大于value的元素的位置,所以返回的是数组的指针或者是容器的迭代器,当然只要减去了首地址得到的也就是目标元素的下标了。 时间复杂度均为:$O(log(last-first))$
  • sort() sort根据具体情况会使用不同的排序方法,而且规避了传统快速排序中可能会出现的复杂度退化到$O(N^2)$的情况(那就跟冒泡排序差不多了,效率差)。
    • sort(首元素地址(必填),尾元素地址的下一个地址(必填),比较函数(非必填)) 例如sort(v.begin(),v.end())
    • 只有vector、string、deque是可以使用sort,因为set、map这种容器是用红黑树实现的,他们本身就是有序的了
    • 如果比较的对象是基本数据类型,那么比较函数可以默认不填(默认是递增顺序,如果我们要改变为递减也是要重写比较函数的),但如果对象是结构体,那么必须由我们来写一个比较函数出来作为排序依据:

       1 bool cmp(int a,int b) //改写为按递减顺序来排序
       2 {
       3     return a > b;
       4 }
       5
       6 struct node
       7 {
       8     int x;
       9     int y;
      10 };
      11
      12 bool cmp(node a,node b) // 结构体的比较函数
      13 {
      14     if(a.x!=b.x)
      15     {
      16         return a.x > b.x;
      17     }
      18     else
      19     {
      20         return a.y < b.y;
      21     }
      22 }

原文地址:https://www.cnblogs.com/kachunyippp/p/10256705.html

时间: 2024-11-10 17:10:04

algorithm头文件的一些常用函数的相关文章

C语言头文件中包含的函数

math.h常用函数 int  abs   (int x); double  acos  (double x); double  asin  (double x); double  atan  (double x); double  atan2 (double y, double x); double  atof  (const char *s); double  ceil  (double x); double  cos   (double x); double  cosh  (double

C++学习笔记之STL标准库(二)algorithm头文件即算法

#include <algorithm> algorithm头文件中主要包含的是一大堆模板函数,即STL库提供的算法,可以认为每个函数在很大程度上是独立的.提供的算法种类有: 1)adjacent_find //检测区间内第一对相等的相邻元素 template<class FwIt> FwIt adjacent_find(FwdIt first,FwdIt last);   //如果成功,返回first+N,N满足*(first+N) == *(first+N+1):如果不存在相等

linux设备驱动程序该添加哪些头文件以及驱动常用头文件介绍(转)

原文链接:http://blog.chinaunix.net/uid-22609852-id-3506475.html 驱动常用头文件介绍 #include <linux/***.h> 是在linux-2.6.29/include/linux下面寻找源文件.#include <asm/***.h> 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件.#include <mach/***.h> 是在linux-2.6.29/arch/ar

php文件操作的常用函数

php对文件的操作有很多,如复制,重命名,查看修改日期等等.在这里我总结了php文件操作常用函数 1.copy()复制 将文件从path1复制到path2.如果成功,返回true,失败则返回false 函数语法如下: bool copy(string path1,string path2) eg: copy('tm.txt','../tm.txt') 2.rename()重命名 把filename1重命名为filename2 函数语法如下: bool rename(string filename

C++标准模板库(STL):algorithm头文件的常用函数之sort()函数

sort()-排序函数 顾名思义,sort就是用来排序的函数,它根据具体情形使用不同的排序算法,效率很高.一般来说,不推荐C语言中的qsort函数,原因是qsort用起来比较麻烦,涉及很多指针的操作.而且sort在实现中规避了经典快速排序中可能出现的会导致实际复杂度退化到O(n2)的极端情况 1. 如何使用sort排序 sort函数的使用必须加上头文件"#include<algorithm>"和"using namespace std;",其使用的方式如

Linux下 头文件&lt;getopt.h&gt; 及其函数的应用

本文内容摘抄自:https://www.cnblogs.com/qingergege/p/5914218.html 函数一: int getopt(int argc,    char* argv[],   const char* optstring); 参数1.2为 main函数的输入参数,参数3 为选项字符串,函数返回值为选项字符. <getopt.h 文件内部的参数: 1. extern char* optarg ;   用于保存选项. 2. extern int   optind,  用来

PHP_File文件操作简单常用函数

php测试文件 <?php header("Content-type:text/html;charest=utf-8");$fileDir='Upload/File/content.txt';echo '文件路径:'.$fileDir.'<br/>';echo '路径目录|dirname():'.dirname($fileDir).'<br/>';echo '路径文件名|basename():'.basename($fileDir).'<br/>

cctype头文件(字符处理库)的使用

C++ 中cctype头文件的使用 头文件cctype(字符处理库)中定义了有关字符判断与处理的库函数,使用前要包含头文件: #include <cctype> using namespace  std: cctype头文件中的常用函数列表如下: 函数名称   返回值isalnum()  如果参数是字母数字,即字母或者数字,函数返回trueisalpha()  如果参数是字母,函数返回trueiscntrl()  如果参数是控制字符,函数返回trueisdigit()  如果参数是数字(0-9

C/C++常用头文件及函数汇总

C/C++头文件一览 C #include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> //定义错误码#include <float.h> //浮点数处理#include <iso646.h>        //对应各种运算符的宏#include <limits.h> //定义各种数据类型最值的常量#include <locale.h> //定