当前位置: 首页 > news >正文

13.vector(下)

模版不能分离到2个文件,如果分离会出现链接错误,

缺省值给上,不写构造都行。当T实例化成vector的时候,传引用,不需要构造了不改变就加const, 

finish 没满 接着放 construct的话数据也要从内存池来,内存池在哪啊,直接new也可以,只要是动态开辟的就行,没满直接用就行,:

满了就扩容:

reserve这用size capacity 都一样,finish和endof storage都是相等的,

可以合并

接下来看reserve

写一部分测一部分

插5个可以看扩容

text.cpp里面包vector,h就可以跑了

调试一下,一插入数据就会崩,因为finish是空指针,

size算出来是不对的,一个是新一个是旧

这样就可以,但是不好,顺序一变就不好了。

这也用的原生指针,begin是开始位置,end是结束位置

支持了迭代器就支持了范围for。这是简单的vector。

给一些const 迭代器

v是以const传的,他是const迭代器,const迭代器能不能调用非const成员函数,不能调用,范围for在const情况下也不行,要转换成const 对象,

假设还有个vector存的double

前面print是vector<int>是不是写死了,按理说应该谁都可以打印,改成模版

编译报错了,

类::这样可能取到类型也有可能取到静态成员变量,类模版是没有实例化的,编译器从上往下编译到这第三行vector<T>不知道,不敢去里面取东西,这种是实例化的,这种不敢取,到底是类型还是静态成员变量,不知道,要等实例化再取,但是又没有实力化,编译器报错了,所以这typename,,声明模版参数可以用typename 也可以class ,但是typename有不同,如果类模版取内嵌的东西,没有实例化的类模版里面取东西,编译器不能区分这里const_iterator是类型还是静态变量,这里加typename,编译器就知道这程序员确认了类型,合乎语法,想成编译器甩锅,编译器只会检查这块没实例化的初步的语法,

用auto不麻烦

如果不是类型是静态成员变量不需要加关键字,静态成员变量不会这么用直接这么写,

接下来写一个更复杂的插入: pos是个迭代器,有效迭代器不是0,所以没string 那么复杂

还没写扩容:

这是不扩容的插入,测一下扩容的插入

 

一直挪动,这就是迭代器失效 ,tmp 是指针,出了作用域销毁也无所谓,

扩容之后pos还指向原来的空间,这种情况较迭代器失效,这种类似野指针,

解决: 记录相对位置,pos-start 

 vector要去find 怎么办,没find,string有find是因为就要找单个也要找串比较特殊,所以他单独写,库里面提供了find

跟逆置一样,不仅仅是一个容器,针对所有容器,迭代器传给我,就可以帮我搞,模版,C++所有算法传迭代器区间都有个要求,传左闭右开,没找到返回last,

这个支持迭代器的好处,即支持了类似下标的插入,也支持了类似迭代器的插入,

  

insert以后可以认为pos已经失效了,pos本来是指向2的,插入数据后挪走了,pos不指向2了,这种也是迭代器失效,

p指向旧空间,其实这(*p)属于越界的野指针访问,这没检查出来而已,

形参传给实参,pos虽然修正,形参改变不影响实参,外面还是失效,不能加引用,加了引用

这种写法就不支持了,v.begin()+2或者是返回值(begin)返回临时变量具有常性不能给普通引用,这不就是权限放大。

不访问p就可以了

库里面返回pos

可以这么写

http://www.dtcms.com/a/615177.html

相关文章:

  • wamp搭建多个网站电子商务网站建设 教学大纲
  • Rust中的for循环与迭代器
  • 食品网站建设方案wordpress 源码出售
  • 深度学习:深入理解 Softmax 激活函数
  • 【持续更新】2025华为OD机试2025双机位A卷机考真题库清单含考点说明(Java/Python/JS/C++/Go)
  • 珠海做网站设计WordPress完全删除
  • 手表网站登录页背景图建设网站推广广告图
  • 小区百货店网怎么做网站开封公司网站如何制作
  • 保研贴 | 2025年(22级)四非计算机大类专业保研历程记录
  • java基础-14 : stream流
  • 巨鹿网站建设公司怎样做网络推广挣钱
  • 网站开发管理方案合肥网站建设合肥做网站
  • Linux宝塔面板安装脚本(正式版:11.2.0)
  • 设计师网站推荐免费的自助建站
  • C Primer Plus 13.10 复习题
  • 营销网站建设网站设计sem竞价
  • 58同城网站官网网站首页设置伪静态
  • 基于springboot框架的网上商城系统的设计与实现
  • 免费做网站方法北京木马工业设计
  • 前端JS深拷贝实现,解决对象引用问题
  • C语言程序编译软件 | 帮助你快速编写和调试C语言程序的工具
  • 搜索网站开发背景做百度移动网站点
  • 网站的关键词怎么设置电子商务市场营销
  • C++进阶:coroutine 协程
  • 网站开发学什么数据库上海seo课程
  • 网站销售的优势crm客户关系管理系统源码
  • Blender:法线图黑白图
  • 做网站要不要钱济南网站优化公司哪家好
  • 编译动态库时只需要知道函数的声明,与可执行文件不同
  • 【OpenGL】CMake报错解决:Error in configuration process,project files may be invalid.