设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1925|回复: 1
打印 上一主题 下一主题

string s,t; s.append(t)跟s+=t是一样的吗?

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-3 01:57:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
s+=t会重新生成一个s,效率不是很高
s.append会重新生成吗?
如果会,用什么方法才不会?
2#
发表于 2009-11-3 01:57:35 | 只看该作者
string是用动态数组实现也就是char *p = new[n]这样的形式

并且,有size(大小)和capacity(容量)这两个概念。

无论是+=还是append,是否会从新申请容量取决于capacity,这个被称为动态增张技术。
比如当然str = “12345”,size = 5,capacity = 10(假设);
+=或者append操作添加的string如果是“1234”size < 5,那么不需要重新申请空间。
添加的string如果是“123456” size > 5,那么就需要申请更大个capacity,也许是当前两倍(没验证)。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 01:32 , Processed in 0.106913 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表