码迷,mamicode.com
首页 > 编程语言 > 详细

STL 算法部分 原创入门教程,要详细资料请百度

时间:2015-02-28 12:55:30      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

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个

不懂。自己查查看吧。

STL 算法部分 原创入门教程,要详细资料请百度

标签:

原文地址:http://www.cnblogs.com/luyi14/p/4305033.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!