2016/02/17 00:06
1.ADT的规范,并且基于这种规范给出向量接口的定义
实现了对于一个数据结构而言最重要的构造与析构接口
与所有数据结构一样,向量也可以看成是一组数据的集合。
2.集中研究向量的可扩充性能
向量是不具备可扩充性能的,原因在于它的静态空间管理。
我们知道向量其实就是开辟一个内部数组_elem[]并使用一段地址连续的物理空间
在elem[]中_capacity是总容量,_size是当前的实际容量。
不难发现使用静态空间管理策略有着严重的不足:
上溢overflow
下溢underflow:装填因子很小空间浪费
3.动态空间管理策略
向量随实际需求动态调整容量,并同时保证高效率。
在练习笔记中expand中:对于尚未封装的数组同样可以运用这个策略,那么对于向量而言这段代码有什么优势呢?这个优势体现在向量整体的封装性上。
我们知道对于一般的数组而言,如果经过动态地重新分配地址,那么原先指向数组内某些元素的指针会出现无效现象。
而在这里向量的封装中,我们同一用了_elem这个统一的指示器来标识空间的起点,尽管扩容之后数据区的物理地址有所改变,却不至于出现野指针。
*******************************************
2016/02/07 20:24
1.跨函数调用内存
#include <stdlib.h>
main()
{
int *p;
fun(&p);
.......
}
int fun(int **q)
{
*q=(int *)malloc(4);
}
2.记得java里有arraylist类还有add()等等一些已经封装好的调用函数
学会这类函数的底层封装程序的编写。用c写出:。。。。。。。。。。。。
结构体变量不能加减乘除,但可以相互赋值。

被折叠的 条评论
为什么被折叠?



