zoukankan      html  css  js  c++  java
  • STL 算法部分 原创入门教程,要详细资料请百度

    STL算法部分

    库为  Algorithm 算法库  Functional函数式编程       Numeric  基础性的数值算法    

    一一:find 查找类有13个函数,详情请百度。

    使用方法,s.find(“a”);s就是一个数据类型,比方说set 集合,就是在一个集合中找到第一个和a一样的 字符,然后返回他的迭代器,

    迭代器可以大概理解为指针。

    用法是  queue<int> : :  iterator it;

    因为大多数函数返回的都是it 类型的指针,所有必须认真掌握。

    二:排序和通用算法

    Sort 排序类有 14个函数。详情请百度。

    Sort (a,a+n)  这样直接在这个范围内正排。

    或者自己写cmp(比较)函数

    Sort(a,a+n,cmp);

    关于cmp怎么写,这个比较麻烦,

    Reverse 对指定范围内元素重新反序排序,。

    1对一维数组排序

    超简单写法

    Bool cmp(int a,int b)

    {return a>b;}降序排序, 后面是完整写法

    如果是qsort的话得这样写

     qsort(a,n,sizeof(a[0]),cmp);        

    int cmp(const void *a,const void *b)//                const 不可改变的 a所指向的值 void 是多态。

    {  return *(int *)a-*(int *)b; }   //  由小到大   (int *)是强制类型转换为int的指针类型,
    int cmp(const void *a,const void *b) //          前面的* 好取指针的值来减虽然麻烦,

    {  return *(int *)b-*(int *)a;   } //  由大到小         不过是为了通用性而设计的,

    .特例排序double型(只能这样来写):

    Double in 【1000】;
    int cmp(const void *a,const void *b)
    {
        return (*(double*)a)>(*(double*)b)  ?  1:-1;

    //返回值的问题,cmp是int型的,避免double 返 回小数而被丢失,
    }   

    三:删除和替换类型算法   十五个。

    Copy  复制序列

    Remove 删除指定范围内,等于指定元素的元素。

    Replace 替换 指定范围替换元素

    Swap  交换,存储在两个对象的值。

    Unique  清除指定范围内重复元素。

    四:排列组合算法 2个

    Next_permutatiom        将当前范围重新排序为全排列,获得的是下一个序列

    Prev­­p_ermutatiom  同上,获得的是上一个序列
    next_permutation(a,a+m)   全排列的下一个

    样例是

    #include<iostream>

    #include<string>

    #include<algorithm>

    using namespace std ;

    int main()

    {

        int n,a[9]={1,2,3,4,5,6,7,8,9};

        cin >> n;

        while(n--)

        {   int m;

            cin >> m;//获取对多少个数全排列

            do

            {

                for(int i = 0; i < m; i++ )

                  cout << a[i];  //输出一行

                cout<<endl;

            }

            while(next_permutation(a,a+m));获取下一个全排列的序列。

        }

        return 0;

    }

    五:算术算法4个

    Accumulate     对迭代器标示的序列段 算和。

    Adjacent_difference   创建新的序列 ,新序列中每一个新值代表当前元素和上一个元素的差。

    这个知道就好,没必要深入学习。

    六 生成和异变算法,6个

    这个我也不懂,和填充元素有关系。

    七,关系算法,8个(比较重要)

    Max min 这个返回大的和小的。

    Max_element  min_element  返回序列中最大和最小的。返回值是迭代器。

    Equal 判断在标志范围内是否相等,返回值是true

    Includes 判断第一个指定范围内的元素是否都被第二个范围包括

    Mismatch 并行比较两个序列指出第一个不匹配的位置。返回值是一对迭代器。

    八:集合算法4个

    Set_union 构造一个有序序列,包含两个序列中所有的不重复元素。

    Set_intersection构造一个有序序列,找出相交的集合部分元素

    Set_difference   构造一个有序序列,找出第一个存在,第二个不存在的。

    Set_symmetric_difference  构造一个有序序列, 去两个序列的对称差集,就是并集-交集

    九:堆算法4个

    不懂。自己查查看吧。

  • 相关阅读:
    iOS版打地鼠游戏源码
    OuNews 简单的新闻客户端应用源码
    安卓DJ113舞曲网应用客户端 项目源码(服务器+客户端)
    博客迁移
    iOS 多张图片保存到相册问题(add multiple images to photo album)
    【转】 iOS 学习之 NSPredicate 模糊、精确、查询
    iOS 设置图片imageView圆角——对图片进行裁剪
    iOS9的那些坑 — — WeiboSDK registerApp启动就崩溃
    关于Debug下的Log打印问题
    Runtime运行时学习(一)
  • 原文地址:https://www.cnblogs.com/luyi14/p/4305033.html
Copyright © 2011-2022 走看看