面向对象三大特性:封装、继承、多态
封装:复用性高的模块抽象出来,进行整理,作为一个整体,提高了代码的复用性
继承:子类继承父类,把父类中所有的属性和行为都获得,不用再次声明,也提高了代码的复用
多态:一个函数名称有多个接口,由于对象不同,父类指针指向子类对象,对象创建的不同,调用一个接口获得的内容不同,会产生不同的形态
STL 即标准模板库,从广义上分为:容器(container) 算法(algorithm) 迭代(iterator)
容器和算法之间通过迭代器进行无缝连接
STL 六大组件
容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器
1、容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据
2、算法:各种常用算法,如sort、find、copy、for_each等
3、迭代器:扮演容器与算法之间的胶合剂
4、仿函数:行为类似函数,可作为算法的某种策略
5、适配器:用来修饰容器或者仿函数或迭代器接口的东西
6、空间配置器:负责空间的配置与管理
一、容器
分为序列式容器和关联式容器
序列式容器:强调值的排序,其中每个元素都有其固定的位置
关联式容器:二叉树结构,各元素间没有严格物理意义上的顺序关系
二、算法
算法分为质变算法与非质变算法
质变算法:运算过程中会更改区间内元素内容。如:拷贝,替换,删除等
非质变算法:运算过程中不改变区间内元素内容。如:查找、遍历、寻找极值等
三、迭代器
提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又不会暴露该容器的内部表达方式
每个容器都有自己的专属迭代器。
迭代器种类:
1.输入迭代器2.输出迭代器3.前向迭代器4.双向迭代器5.随机访问迭代器
常用4、5
四、仿函数
仿函数(Functor)又称为函数对象(Function Object)是一个能行使函数功能的类。
通过重载括号运算符实现