当前位置:   article > 正文

【C++】深入探索:从零开始模拟实现C++中的Vector容器

【C++】深入探索:从零开始模拟实现C++中的Vector容器

目录

Vector的模拟实现

一、vector的核心框架

二、成员变量和迭代器

三、构造函数

1. 无参构造函数

2. 带参构造函数

3. 区间构造函数

4. 拷贝构造函数

5.列表赋值

6.operate=

四、析构函数

五、容量相关函数

1. size和capacity

2. reserve

3.resize

六、容器相关操作 

 1. push_back

 2. pop_back

 3.insert

 4.erase

5.swap


Vector的模拟实现

在C++中,vector是一个非常常用的容器,它提供了一种动态数组的实现方式,允许我们在运行时动态地增加或减少元素的数量。vector的内部实现主要依赖于动态分配的内存和连续存储的元素。

关于vector的使用可以转至【C++】深入探索vector,让你一次性学懂!-CSDN博客

⭐一、vector的核心框架

在STL的vector中,主要通过三个指针来控制数据的个数以及容量的大小:

  • start指针:指向数据的开始位置。
  • finish指针:指向最后一个数据的下一个位置。
  • endOfStorage指针:指向vector所开辟的空间中的最后一个位置。
  1. template<class T>
  2. class vector
  3. {
  4. private:
  5. iterator _start; // 指向数据块的开始
  6. iterator _finish; // 指向有效数据的尾
  7. iterator _endOfStorage; // 指向存储容量的尾
  8. };

通过这三个指针,我们可以很方便地计算出数据的个数(finish - start)和容量的大小(endOfStorage - start)。 

⭐二、成员变量和迭代器

在模拟实现vector时,我们首先需要定义这些成员变量,并定义迭代器类型。迭代器实际上就是原生指针的封装,因为vector是连续存储的。

  1. template<class T>
  2. class vector
  3. {
  4. public:
  5. //常规迭代器和const迭代器
  6. typedef T* iterator;
  7. typedef const T* const_iterator;
  8. //迭代器相关函数
  9. iterator begin()
  10. {
  11. return _start;
  12. }
  13. iterator end()
  14. {
  15. return _finish;
  16. }
  17. const_iterator begin() const
  18. {
  19. return _start;
  20. }
  21. const_iterator end() const
  22. {
  23. return _finish;
  24. }
  25. private:
  26. //定义成员变量
  27. iterator _start = nullptr;
  28. iterator _finish = nullptr;
  29. iterator _endOfStorage = nullptr;
  30. };

⭐三、构造函数

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】

推荐阅读
相关标签