两种概念的差别
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 是自己定义的函数来决定 如何比较类或者自定义数据结构的大小