Vector和List的实现

时间:2022-11-13 04:17:20

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.在插入类函数中,可定义一个变量保存待插入节点前一个节点/后一个节点,增强代码可读性和可修改性。