前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >STL 算法部分 原创入门教程

STL 算法部分 原创入门教程

作者头像
十四君
发布2019-11-28 16:32:49
4220
发布2019-11-28 16:32:49
举报
文章被收录于专栏:UrlteamUrlteam

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  构造一个有序序列, 去两个序列的对称差集,就是并集-交集

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档