• algorithm下的常用函数


    algorithm下的常用函数

    max(),min(),abs()

    • max(x,y)返回x和y中最小的数字
    • min(x,y)返回x和y中最大的数字
    • abs(x)返回x的绝对值,注意x应当是整数,如果是浮点数应当使用math头文件下的fabs函数

    swap()

    swap(x,y)交换x和y的值

    reverse()

    reverse(it,it2)可以将数组指针在[it,it2)之间的元素或者容器的迭代器在[it,it2)范围内进行元素反转。
    对于数组中的元素

    # include <iostream>
    # include <algorithm>
    using namespace std;
    int main(void)
    {
        int a[5]={1,3,2,3,4};
        reverse(a,a+4);//将a[0]~a[3]逆转
        for(int i=0;i<5;i++)
        {
            cout<<*(a+i)<<endl;
        }
        return 0;
    }
    

    对于容器中元素

    # include <iostream>
    # include <algorithm>
    using namespace std;
    int main(void)
    {
       string s="abcdefghig";
       reverse(s.begin(),s.end());
       cout<<s<<endl;
       return 0;
    }
    

    next_permutation()

    next_permutation()给出一个序列在全排列的下一个序列

    # include <iostream>
    # include <algorithm>
    using namespace std;
    int main(void)
    {
       int a[10]={1,2,3};
       do
       {
           cout<<a[0]<<' '<<a[1]<<' '<<a[2]<<endl;
       }
       while(next_permutation(a,a+3));
       return 0;
       
    }
    

    fill()

    可以将数组或者容器中某个区间赋值为某个相同的值,和memset不同的是,这里的赋值可以是数组类型范围内任意的值

    int a[5]={1,2,3,4,5};
    fill(a,a+5,233);//将a[0]~a[4]全部赋值为233
    

    sort()

    sort的基本使用

    sort(首地址(必填),尾地址的后一个地址(必填),比较函数(非必填))

    int a[6]={1,2,3,4,5,6};
    sort(a,a+4);//对a[0]~a[3]进行排序
    

    实现比较函数

    基本排序

    如果不填比较函数,会自动从小到大进行排序

    规定比较函数排序

    bool cmp(int a,int b)
    {
        return a>b;//可以理解为a>b的时候a放在b的前面
    }
    int a[6]={1,2,3,4,5,6};
    sort(a,a+4,cmp);
    

    结构体排序

    struct node{
        int x,y;
    }ssd[10];
    
    
    bool cmp1(node a,node b){
         return a.x>b.x;
    }
    
    bool cmp2(node a,node b){
        if(a.x!=b.x)
        return a.x>b.y;//a.x和b.x和不相等的时候按照x从小到大排序
        else
        return a.y<b.y;//否则按照y从大到小排序
    }
    
    ssd[0].x=1;
    ssd[0].y=2;
    ssd[1].x=4;
    ssd[1].y=2;
    ssd[2].x=8;
    ssd[2].y=4;
    
    sort(ssd,ssd+3,cmp1);
    
    

    容器排序

    按照字典序排序
     string str[3]={"aa","bb","cc"};
     sort(str,str+3);//按照字典序进行排序
    
    按照字符串长度进行排序
    bool cmp(string a,string b){
        return a.length()>b.length();
    }
    
    sort(str,str+3,cmp);
    

    lower_bound()和upper_bound()

    lower_bound()需要一个有序容器或者数组,其寻找[first,end)范围内第一个大于等于val的元素的位置,如果是数组就返回指针,如果是容器就返回迭代器

    upper_bound()需要一个有序容器或者数组,其寻找[first,end)范围内第一个大于val的元素的位置,如果是数组就返回指针,如果是容器就返回迭代器

  • 相关阅读:
    AVFrame 解析
    Mat与图像的基本概念
    linux基本操作
    Makefile 使用
    MySQL的安装与配置——详细过程
    k8s imagePullPolicy拉取策略
    K8S拉取Django项目创建pod
    Harbor单点仓库部署
    Django项目构建发布Harbor仓库
    K8S集群部署-二进制部署
  • 原文地址:https://www.cnblogs.com/mengxiaoleng/p/11405807.html
Copyright © 2020-2023  润新知