vector类的学习和实现4月8日

Posted on   玄灵镜  阅读(16)  评论(0编辑  收藏  举报
vector类不同于string类.他其中的成员变量都为重定义自定义类型指针为迭代器,用指针的位置来代表容量,当前容器大小

构造函数:将所有指针都置为空,析构函数:释放空间并将所有成员指针置为空.

拷贝构造和重载=运算符:拷贝构造可以开空间并依次尾插被拷贝类的各个数值来达到构造的目的,而自定义运算符可以根据函数传参自动调用拷贝构造的特性来完成赋值的目的.手动实现swap为了提高效率.

一些特别的点:

1.迭代器失效问题:在迭代过程中若是出现容器扩容,则可能会出现迭代器指针失效导致程序崩溃.

或者迭代过程中删除元素导致vs环境下检测报错.可以用上述图片中用到的方法解决,就是erase函数会返回删除位置下一位的指针,我们可以用迭代器接受这个值来解决.

2.c++11的范围for是依靠容器的迭代器来工作的,若是begin函数或者end函数出现问题则迭代器也会出现问题

3.mem系列库函数是按字节处理数据的,所以在用mem系列函数处理类之间的问题时要慎重考虑.

4.c++中可以用double j=double(7.8)来初始化内置类型.因为需要考虑到兼容模版

5.析构函数一定要尽早些不然出现内存泄漏可能不会被发现,或者当工程写到一定程度时写了析构函数报错会很麻烦,因为不知道那里内存泄漏了.

最后加深记忆:在函数传参的时候一定要考虑传引用!!!

 

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现

随笔 - 53, 文章 - 0, 评论 - 0, 阅读 - 1892

Copyright © 2025 玄灵镜
Powered by .NET 9.0 on Kubernetes

点击右上角即可分享
微信分享提示