查看完整版本: [-- 关于第十一章容器类顺序容器的问题 --]

QTCN开发网 -> 《C++ GUI Qt 4编程》(第2版)专栏 -> 关于第十一章容器类顺序容器的问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

15630176380 2017-09-12 17:02

关于第十一章容器类顺序容器的问题

212页有一段话:隐含共享是Qt对不希望修改的数据绝不进行复制的保证;然后213页对隐含复制具体解释里面,隐含复制的具体实现也是需要复制的呀,说实话隐含复制不是看得很明白

cycloveu 2017-09-13 08:50
写时复制,意思就是说当你改变该容器内容的时候它才复制。举个例子:
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 2017-09-13 15:30
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) 

那其实就是 在改变容器内容的时候才进行深拷贝  是吧


查看完整版本: [-- 关于第十一章容器类顺序容器的问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled