5:OOP面向对象编程 VS GP 泛型编程

本文讨论了面向对象编程(OOP)和泛型编程(GP)在数据与方法处理上的区别,强调了GP利用STL和模板编程避免继承和虚函数,以及容器和算法的独立性。特别关注了`sort`方法的使用,指出list由于链表特性无法直接使用全局`sort`,需自定义实现。
摘要由CSDN通过智能技术生成

两种概念的差别

OOP 面向对象 —大量的继承关系和 虚函数 比较复杂
GP–stl的使用 使用模版编程 不用继承和大量虚函数需要理清楚关系

OOP 想要将datas 和methods放在一起

在这里插入图片描述

list 这个类展现了OOP的思想 数据和 操作 放在一起的

GP 想要将datas 和methods分开来

在这里插入图片描述

算法是算法 数据是数据
右边的算法 只需要给容器的迭代器初始和末尾的 算法就可以通过迭代器 去操作容器

GP的好处

  • 容器和算法团队 可以各自闭门造车 沟通Iterator即可
  • 算法可以通过iterator来确认操作范围 并通过它取用Container元素

如何比较大小 需要类自己去重定义小于号 本质上最后还是通过比较某个数字或者字母的大小来对比的

在这里插入图片描述
为什么list不能使用::sort()排序
代码里面对于迭代器的操作 说明这个迭代器必须是随机访问的迭代器 具有随机访问的功能 ,所以list的特性(链表 ) 决定它不能使用这个全局定义的sort 只能通过内部去封装实现一个sort 以实现对应的功能

sort方法

类似于sort 这一类的函数 如果容器本身有实现的话 就去调用容器本身的 sort 没有的话再去调用全局的sort

在这里插入图片描述

注意comp 是自己定义的函数来决定 如何比较类或者自定义数据结构的大小

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值