• 3269阅读
  • 2回复

关于第十一章容器类顺序容器的问题 [复制链接]

上一主题 下一主题
离线15630176380
 

只看楼主 倒序阅读 楼主  发表于: 2017-09-12
212页有一段话:隐含共享是Qt对不希望修改的数据绝不进行复制的保证;然后213页对隐含复制具体解释里面,隐含复制的具体实现也是需要复制的呀,说实话隐含复制不是看得很明白
离线cycloveu

只看该作者 1楼 发表于: 2017-09-13
写时复制,意思就是说当你改变该容器内容的时候它才复制。举个例子:
std的复制:std::vector<int> v1; std:vector<int> v2; v1 = v2; v1和v2是不同的内存空间;首先new一块内存,再将数据memcpy过去.
qt的复制:QVector<int> qv1; QVector<int>qv2; qv1 = qv2; qv1和qv2是相同的内存空间, 当qv1.append(1)时,qv1再new一块内存,将值赋值为1.
总结:就是 真正申请内存的时机的区别,一个在复制时就开辟内存,一个在改变内容时才开辟内存.有点像单列模式里面的饿汉和饱汉的区别。
大道至简 悟在天成
离线15630176380

只看该作者 2楼 发表于: 2017-09-13
回 cycloveu 的帖子
cycloveu:写时复制,意思就是说当你改变该容器内容的时候它才复制。举个例子:
std的复制:std::vector<int> v1; std:vector<int> v2; v1 = v2; v1和v2是不同的内存空间;首先new一块内存,再将数据memcpy过去.
qt的复制:QVector<int> qv1; QVector<int>qv2; qv1 .. (2017-09-13 08:50) 

那其实就是 在改变容器内容的时候才进行深拷贝  是吧
快速回复
限100 字节
 
上一个 下一个