14. 算法的示例

15 篇文章 0 订阅

算法示例

accumulate

在这里插入图片描述

  • Callable item:
    • function
    • function object operator()()
    • lambada [](){}

for_each

在这里插入图片描述

  • range-based for statement

    for(decl : coll)
    {
      	statement; 
    }
    

replace

在这里插入图片描述

头,尾,旧值, 新值

带着if名称表示要给一个条件,参数是 头,尾,条件,新值 predicate 表示判断式 返回bool类型

oldvalue 都以new value 放到新区间,不符合原值者也放入新区间,旧的值不会被覆盖

count, count_if

​ 容器中有没有提供同名成员函数,容器提供的成员函数效率更高

在这里插入图片描述

可以认为是泛化的算法

容器提供的可以认为是特化的算法,效率更高

为什么只有这八个提供了特化的算法,因为底层实现是associate 关联式容器,底层是红黑树和散列表

插入,删除,查找,其中查找的性能很好。

至于关联式容器。内部有自己的组织形式,不必使用sort算法对他们进行排序

find, find_if

​ 循序查找算法。O(n)

在这里插入图片描述

​ 关联式容器提供的find效率为 O(log2N);

sort

​ random_access iterator

在这里插入图片描述

  1. 堆排序
  2. 快速排序
  3. 插入排序

rbegin(), rend()

​ 8 个关联式容器不适用于sort算法 bidirectional iterator

​ list forward_list 自带成员函数 sort

reverse iterator, rbegin(), rend()

在这里插入图片描述

rbegin 指向的是 end的前一个元素

rend 指向的是begin前一个元素

  • 如何实现?
// 使用适配器
reverse_iterator
rbegin()
{
  	return reverse_iterator(end()); 
}

reverse_iterator
rend()
{
  	return reverse_iterator(begin()); 
}

binary_search

​ 前提:有序

​ 前向迭代器 forwardIterator

在这里插入图片描述

Lower_bound : 可插入的最小秩

Upper_bound:可插入的最大秩

根据 lower_bound 去判断是否找到了元素

在前面可以先做一个检查,可以让效率提高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值