如何找到一家专业的天津网站建设制作品牌公司?

摘要:东莞公司建设网站,天津网站建设制作品牌公司,百度关键词优化软件排名,网站 粘度🚀write in front🚀 📜所属专栏&#x
东莞公司建设网站,天津网站建设制作品牌公司,百度关键词优化软件排名,网站 粘度#x1f680;write in front#x1f680; #x1f4dc;所属专栏#xff1a;初阶数据结构 #x1f6f0;️博客主页#xff1a;睿睿的博客主页 #x1f6f0;️代码仓库#xff1a;#x1f389;VS2022_C语言仓库 #x1f3a1;您的点赞、关注、收藏、评论#xff0c;是对… write in front 所属专栏初阶数据结构 ️博客主页睿睿的博客主页 ️代码仓库VS2022_C语言仓库 您的点赞、关注、收藏、评论是对我最大的激励和支持 关注我关注我关注我你们将会看到更多的优质内容 文章目录 前言一.vector和string的区别二.vector的使用三.vector的模拟实现1.vector的成员变量2.vector的迭代器问题重点insert()函数erase()函数insert的迭代器失效erase的迭代器失效string的迭代器失效 3.vector深浅拷贝问题4.vector构造函数问题 总结总结 前言 在学习完string之后我们来开始vector的学习其实vector的各个函数和string是非常类似的所以我们就着重讲讲vector的易错点就行了。 一.vector和string的区别 vector是可变大小数组的序列容器可以存储任意相同类型的元素。而string是专门用来存储字符串的。当然我们不能用vectorchar来代替string因为string存在着’\0’的问题并且string的有些函数是专门针对字符串的而vector没有。 二.vector的使用 在这里参考文档就可以了:vector使用介绍   当然对于二维数组我们就不得不说vector的优势了。在学习c语言时对于二维数组我们每一行每一列的大小的空间都是定死的而如果我们使用vectorvectorint就可以灵活使用。   在看完vector的使用文档我们就可以明白里面的原理 三.vector的模拟实现 在这里我们就就讲讲和string不同的地方即可其他地方和string都是类似的。 1.vector的成员变量 通过查看strl的vectorstl的原代码实现实现我们可以看出vector的成员变量和string的是不太一样的   由此可见vector的成员变量是通过三个指针来实现的。他们分别指向数组的开头数组的有效尾部和数组的容量尾部。 2.vector的迭代器问题重点 迭代器的主要作用就是让算法能够不用关心底层数据结构其底层实际就是一个指针或者是对指针进行了封装比如vector的迭代器就是原生态指针T* 。因此迭代器失效实际就是迭代器底层对应指针所指向的空间被销毁了然而使用一块已经被释放的空间造成的后果是程序崩溃(即如果继续使用已经失效的迭代器程序可能会崩溃)。 insert()函数 iterator insert(iterator pos, const T x){assert(pos _start pos _finish);if (_finish _endofstorage){size_t len pos - _start;size_t newcapacity capacity() 0 ? 4 : capacity() * 2;reserve(newcapacity);// 解决pos迭代器失效问题pos _start len;}iterator end _finish - 1;while (end pos){*(end 1) *end;--end;}*pos x;_finish;return pos;}erase()函数 iterator erase(iterator pos){assert(pos _start pos _finish);iterator it pos 1;while (it ! _finish){*(it - 1) *it;it;}--_finish;return pos;}insert的迭代器失效 会引起其底层空间改变的操作都有可能是迭代器失效比如resize、reserve、insert、assign、push_back等。
阅读全文