Vector和List基本操作的实现
前言
基于STL,实现Vector和List的一般功能。
Vector底层实现为:顺序表
List底层实现为:带头节点的双向循环链表(优点:增删速度快,时间复杂度为O(1))
<一>基本功能
- 构造函数
- 拷贝构造函数
- 赋值运算符重载
- 析构函数
- 尾插
- 尾删
- 头插
- 头删
- 插入
- 删除
- 查找
<二>实现代码
小结
-
在实现Vector时,需注意以下几点:
1.在赋值运算符重载函数中,为避免新空间开辟失败。故,在开辟空间之后再释放之前_first的空间。
2.memcpy(void *dest,void *src,size_t n);其中n表示的是所拷贝的空间字节数。
3.两个不同类型的变量进行比较时,需注意有没有类型提升带来的隐患。如:insert()函数中的i变量与pos变量。 -
在实现List函数时,需注意以下几点:
1.在构造List时,头节点的数据不具有任何意义,故可以用一个匿名对象初始化_head;
2.在拷贝构造函数中,切记:插入元素之前,必须先构造一个循环空链表;
3.在插入类函数中,可定义一个变量保存待插入节点前一个节点/后一个节点,增强代码可读性和可修改性。