泛型算法(lambda表达式、function类模板、bind函数适配器、迭代器类别、链表数据结构独有的算法)

本文详细介绍了泛型算法的核心概念,包括迭代器的使用,强调算法与数据结构的分离,以及如何通过迭代器访问和操作元素。文章讨论了find()函数、只读算法如accumulate()、write容器元素的算法如fill()和fill_n(),以及如何使用back_inserter避免对空容器的操作。此外,文章深入探讨了lambda表达式的原理、捕获列表和应用,以及function模板和bind函数适配器。最后,文章提到了链表数据结构特有的splice算法和算法命名规范,阐述了链表数据结构与通用算法的区别。
摘要由CSDN通过智能技术生成


概念

一般情况下,泛型算法本身不会执行容器的操作,它们只会运行于迭代器之上,执行迭代器的操作。

泛型算法的一大优点是 “泛型”,也就是一个算法可用于多种不同的数据类型,算法与所操作的数据结构分离。这对编程效率的提高是非常巨大的。

要做到算法与数据结构分离,重要的技术手段就是使用迭代器作为两者的桥梁。算法从不操作具体的容器,从而也就不存在与特定容器绑定,不适用于其他容器的问题。算法只操作迭代器,由迭代器真正实现对容器的访问。不同容器实现自己特定的迭代器(但不同迭代器是相容的),算法操作不同迭代器就实现了对不同容器的访问。

因此,并不是算法应该改变或不该改变容器的问题。 为了实现与数据结构的分离,为了实现通用性,算法根本就不该知道容器的存在。 算法访问数据的唯一通道是迭代器。是否改变容器大小,完全是迭代器的选择和责任。

除了少数例外,标准库算法都对一个范围内的元素进行操作。我们将此元素范围称为“输入范围”。接受输入范围的算法总是使用前两个参数来表示此范围,两个参数分别是指向要处理的第一个元素和尾元素之后位置的迭代器。


find()函数

以find()函数为例来理解。传递给find的前两个参数是表示元素范围的迭代器,第三个参数是一个值。find将范围中每个元素与给定值进行比较。它返回指向第一个等于给定值的元素的迭代器。如果范围中无匹配元素&#

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

·Jormungand

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值