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

12.string_vector(上)

简单看看第一个是utf16编码下一个是utf32编码

他们的长度也是不一样的。utf8是一个字节为单位,一个汉字占两个,加斜杠0占五个两个字节一个单位,两个字节为一个单位,最少占用两个字节,2*3,4*3,了解一下

也有可能互相转换,两个库还互相转,

wide char是宽字符不确定几个字节 string对应窄字符,确定是八个字节,比如说long不同平台占用的字节不同,确定的是wide  char 在windows是两个字节,跟char16_t功能是重叠的, 存utf16

widechar 存字符串也是过不去的,要加个L

认识一下,了解看到对应开头就要知道什么编码。、

basic string 是一个模版存不同类型字符串.string 只是存char的

深拷贝还有一种写法类似让别人帮我干活,让别人帮我拷贝,现代写法:

如果我的str是随机值给tmp会有风险,所以在给可以给点缺省值

如果是随机值,tmp是临时对象,释放的时候,就是野指针,出错。

交换我们可以单独写个交换函数:两个string 交换直接交换成员编不过
他会认为参数不匹配,因为先找的就是这个函数,这里要用算法库里的

这样更简洁,this (s2)和tmp交换。

这里要保证缺省值是nullptr,不然出问题,

this 再调用swap

delete空没问题但是如果这里是随机值,那么tmp析构时候就有问题了.\

free和delete对空都做了特殊处理,可以

首先要把自己的值释放,,tmp先把s3拷贝,this 也就是s1跟tmp交换

tmp出了作用域又把这块空间释放析构了,

赋值还可以再变形:

以后用着几种方法写,拷贝构造必须引用,赋值不用,tmp就跟s3有一样大空间一样大值,一换,一销就搞定。

为什么还要自己整个swap,,传统swap交换是构造,s1拷贝构造一个c深拷贝,b就是s2,赋值给s1这又是一次深拷贝,,再赋值,共三次深拷贝,代价大,

日期类还行,深拷贝的不行所以自己写个,自己写的,调算法库实例化三个都是内置类型,因为模版是string 类型,而这是char*指针和——size _capacity  ,C++98更推荐下面的方式

这些也不用担心,库里老早就考虑好了,全局这块写了个全局swap

这有个模版版本还有个实例化版本,调用时候调用已经写好的,优先调用下面的,,还是直接调用。不用深拷贝。

所以这两种方式效率是一样的。(自己写的和系统的)引用计数了解。
浅拷贝的问题:,所以加引用计数,前几个对象只--计数,最后一个才释放

s2如果要修改,计数不是1,我要做深拷贝计数减减,减到1,然后指向我的资源 ,然后修改

引用计数谁写谁再进行拷贝。最终还要深拷贝,为啥不最开始就深拷贝,不是每个场景就会写,

博弈:如果拷贝后,不写是不是就赚了。

考虑优化,直接拷贝构造,是深拷贝,最后还要销毁,这里再看一下我们的方案:str要拷贝ret要浅拷贝,引用计数1变2,出了作用域str销毁,2减到1.,提高效率了

如果后面写了,这两个方案效率一样,这个方案在现在逐渐pass了。

string 有指针 size capacity  还有个16个字节的buffer 所以总共28字节。

这是引用计数写时拷贝里面要由加这个函数

然后拷贝构造按引用计数方式实现

这是结构体内有个指针 指针指向空间,柔性数组是一次nalloc,malloc结构体,数组和结构体是一块空间,数组不够了还要扩,

G++string里面只有一个指针,先存size capacity 和引用计数,s1对象只有一个指针,他是四个字节或者八个字节,指向这块哦空间,类似柔性数组,结构和后面空间放到一起

那这我要怎么找到数组的问题,指针ptr加12字节就到这个位置了,就可以访问了,所以G++是八字节,倩倩了解一下。

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

相关文章:

  • (论文速读)面向实用的实时神经视频压缩
  • 赣州福泰龙网站建设黄岛网站制作
  • 易语言编译器——功能与应用详解
  • 建设工程施工许可证在哪个网站办wordpress 显示加载时间
  • 免费商品交易网站代码下载关键词搜索工具
  • 做个网站要钱吗嘉兴网
  • MySQL: MyISAM与InnoDB存储引擎特性及选型指南
  • 天津制作个人建站淘宝客网站怎么做分销
  • 网站内优化怎么做推广策略都有哪些
  • 代码生成工具Trae中的 “Builder模式”
  • 做网站用什么云服务器吗东莞住房城乡建设部官网
  • 江西省建设厅网站资质升级查询做网站美工工资多少钱
  • 站长工具seo综合查询下载安装ppt模板免费下载完整版免费简约
  • 【AI学习】关于大模型发展的一些话语
  • 宁波网站建设 慕枫科技网页编辑工具2022
  • 常用网站如何在桌面做快捷方式网站备案域名需要解析到备案服务器吗
  • SAP FICO模具材料付款清单
  • 进程调度的基本过程
  • C语言编译器电脑版 | 提升C语言开发效率,轻松调试程序
  • 企业网站 开源php雄安优秀网站建设方案
  • Python趣味算法:爱因斯坦的数学题:用Python解决经典阶梯问题
  • 我爱学算法之—— 链表
  • C++11:引用折叠,完美转发,可变参数模板,defult和delete,final和override,委托构造函数,继承构造函数
  • Datawhale25年11月组队学习:hello-agents+Task2
  • 怎么用php源代码做网站私人网页服务器
  • 天台网站建设题库网站怎样做
  • 如何制作一个php网站源码网上商店的业务流程
  • 网站开发 微信 支付召开网站群建设通知
  • JPA 数据绑定通过 **注解映射** 实现对象与表的关联
  • VSCode编译C语言 | 高效配置与运行步骤指南