本星期学习了类与对象以及STL关于vector map sort的相关知识。
对于类与对象本周学习了析构函数、new和delete:
析构函数,类名::~类名(){函数体}
无返回值,无参数(从而无重载函数),而且调用顺序与构造函数相反。
同时,学习了new和delete,例1,new 数据类型[单位数];其中单位数可为变量,可通过单位数来实现可变数组长度与vector类似。例2,new 数据类型;开辟一个相同数据类型的空间。
对于new来说,其相当于一个函数,在内存开辟后返回空间的首地址,可用指针来保存,并进行访问。
delete,将new开辟的空间返回系统,用new开辟空间,只有用delete显式释放。
例1,int *p;p=new int;....delete p;
例2,int *p;p=new int[5];...delete []p;
如果用new申请空间分配失败,new将返回空指针hull(0),因此,需对内存分配进行检查(if(!p))。
vector
一个类似于动态的一维数组,大小随数据的插入和删除改变,可存在重复元素,可以解决开辟变量内存过剩的问题,减少空间的开辟。
map
map提供一对一的数据处理能力,具有对数据自动排序的功能。例如,班级中,每个学生名字对应一个学号——map。map<int,string>student。
可以进行map中的数据查找,
一,用count函数来判断是否出现。
二,用find函数定位数据出现的位置。
对于此用法还有欠缺,理解比较浅薄。
sort
用sort可以进行一系列的排序,用起来比较方便直接。
sort默认为从小到大排序,排列顺序可以通过改变布尔类型cmp来进行改变,来自己定义运算符,例如,从大到小,bool cmp(int n,int b){return a>b}
sort (begin,end,cmp)
本周学习的其他内容,sync_with_stido(false)用cincout时可提高运行速度。
强化了随机数的使用,srand(time(0));x=rand%n;
通过n来控制随机数的范围。
重载运算符,数据类型 operator 运算符名称()
{对运算符的重载}
运算符被重载之后,其原有的保留,没有丧失或改变。