s+=t会重新生成一个s,效率不是很高s.append会重新生成吗?如果会,用什么方法才不会?
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,也许是当前两倍(没验证)。