自己动手写Vector【Cherno C++教程】
动手写一个Vector
本文是对《最好的C++教程》的动手写数据结构部分的一个整理,主要包含91p动手写Array数组和92p动手写Vector数组的内容。
自己动手来写这些数据结构是学习C++的绝佳方法,并且可以更加深刻的理解标准库中Vector和Array的实现和用法。
https://youtu.be/TzB5ZeKQIHM ,https://youtu.be/ryRf4Jh_YC0文中代码github链接:https://github.com/zhangyi1357/Little-stuff
目录- 动手写一个Vector
- Array数组
- Array数组API
- Array数组实现
- const成员函数
- constexpr
- Vector数组
- 动态扩容策略
- 基础版本
- 基础版本API
- 基础版本实现
- move版本
- move版本API
- move版本实现
- EmplaceBack & Placement new
- 原地构造 API
- 原地构造实现
- 关于new和delete的疑问
- PopBack和析构函数
- PopBack和析构函数 API
- PopBack和析构函数实现
- ::operator new/delete
- 析构API
- 正确内存管理实现
- 总结
- 参考资料
Array数组
在大多数情况下,当我们需要一个数组时,我们都会优先使用vector
,因为vector
可以动态扩容,效率也足够高,非常好用。
但是你需要array
数组的情况在于很多时候只需要一个静态大小的数组,而这种情况下vector
的堆内存分配相较于array
数组直接在栈上分配内存的效率就比较低了。
实际上一个Array
数组的实现非常简单,如果你对模板比较熟悉的话,基本上就是给一个数组写一个模板然后给用户几个接口。
Cherno C++视频教程92P(Vector) bilibili