学习笔记:C++标准模板库STL

STL(standard template library)  包含头文件 #include<algorithm.h>

一、sort排序算法

1、sort排序(用法一):

sort(数组名+n1,数组名+n2)表示将数组中下标n1至n2的元素从小到大排序。

注意:[n1,n2)区间为左闭右开,不包含n2元素。

2、sort排序(用法二):

sort(数组名+n1,数组名+n2,greater<T>())表示将基本类型为T的数组元素,在[n1,n2)区间里从大到小排序,使用时将T替换成对应的int、double等。

3、sort排序(用法三):

sort(数组名+n1,数组名+n2,排序规则结构名())表示用自定义的排序规则,对任何数组进行排序。

排序规则定义方式:

struct 结构名
{
  bool operator()(const T &a1,const T &a2)
  {
         //若a1应该排在a2前面,则返回true;
         //否则返回false
  }
}

示例:

struct Rule
{
  bool operator()(const int &a1,const int &a2)
  {
     return a1%10<a2%10;
      //按个位数从小到大排序
  }
}

二、STL二分查找算法

1、binary_search二分法(用法一)

binary_search(数组名+n1,数组名+n2,值)表示在下标[n1,n2)区间内查找“等于值”的元素。

”等于“的含义:a=b \rightarrowa<b&&b<a 不成立。

2、binary_search二分法(用法二)

binary_search(数组名+n1,数组名+n2,值,排序规则结构名())表示在自定义规则下排好序的,元素为任意T类型的数组中进行二分查找。

注意:查找时的排序规则和排序时的必须一致,binary_search二分法输出的是布尔值,找到的话为true,未找到的话为false。

”等于“的含义:a等于b\rightarrow”a必须排在b前面“&&”b必须排在a前面“都不成立。

3、lower_bound二分查找下界(用法一)

T * lower_bound(数组名+n1,数组名+n2,值)表示在从小到大排序的基本类型数组中,进行查找,返回一个T类型的指针。

返回的指针p指向查找区间大于等于”值“且下标最小的元素,如果找不到,*p指向下标为n2的元素。

4、lower_bound二分查找下界(用法二)

T * lower_bound(数组名+n1,数组名+n2,值,排序规则结构名())表示查找区间里,按照规定的排序规则,可以排在”值“后面(大于等于)且下标最小的元素。如果找不到,指向下标为n2的元素。

5、upper_bound二分查找上界(用法一)

T * upper_bound(数组名+n1,数组名+n2,值)表示在从小到大排序的基本类型数组中,进行查找,返回一个T类型的指针。

返回的指针p指向查找区间大于”值“且下标最小的元素,如果找不到,*p指向下标为n2的元素。

6、upper_bound二分查找上界(用法二)

T * upper_bound(数组名+n1,数组名+n2,值,排序规则结构名())表示查找区间里,按照规定的排序规则,必须排在”值“后面(大于)且下标最小的元素位置。如果找不到,指向下标为n2的元素。

注意:在排序规则里没有“大”和“小”的概念,只有“谁在前谁在后”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值