`
美丽的小岛
  • 浏览: 310862 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

隐含共享 与 处理它的方法

 
阅读更多

首先我们举个简单的例子讲述隐含共享,看看他的神秘面纱下的工作:

String s1="Hello !";

String s2=s1;

在这个例子中我们的初衷是将s2也赋值成="Hello !",但是计算机为了处理更快就采用了隐含共享,并没有先开辟区域再复制"Hello !",而是直接让s2指向的是s1的数据结构。

s2[0]='h';

这个时候由于我们对s2进行修改,就会发生深层复制。目的是确保s2没有再指向s1,修改是在对新的一片数据结构进行的。

 

在QT编程时对 所有的容器 和 QString QByteArray QBrush QFont QImage QPixmap对象 ,使用函数返回赋值,作为函数参数赋值等都是采用的这种高效的传递方式。

但是当不需要修改值的时候,可能由于你的使用不当还是会发生深层的复制。怎么让他不发生深层的复制而影响效率呢?

例如:

vector<QString> abc;

vector<QString> newabc=abc;

newabc现在是通过隐含共享进行的高速传递:

1.newabc[n] 这种形式出现后,Qt是不能辨别是在左边还是右边 会直接进行深层复制。

      (1) 应该使用newabc.at(n);

       (2)或把vector 声明声明为const型,它就不会把这种形式认为是在修改值了。

2.如果使用了begin()或end(),会进行深层复制。

        (1)使用constBegin()或constEnd() const_iterator代替。

        (2)或把vector 声明声明为const型,它就不会把这种形式认为是在修改值了。

        (3)使用foreach是可以代替使用begin()或end()。

分享到:
评论

相关推荐

    JSP的九个隐含对象

    它可以用来访问其他隐含对象或获取请求范围、会话范围、应用范围等不同范围内的数据。 2. **request**: 它是`javax.servlet.http.HttpServletRequest`的一个实例,用于访问HTTP请求的信息,如请求参数、请求头、...

    Jsp中九个隐含对象的区别.doc

    - `pageContext`是JSP页面特有的,主要用于在JSP标签库和自定义标签中访问和存储数据,而`ServletContext`是整个Web应用程序的共享上下文,提供了与Web服务器交互的方法,如读取初始化参数和在不同Servlet之间共享...

    JSP EL隐含对象

    application对象代表整个Web应用程序的范围,数据在所有用户间共享。例如,设置全局变量`${application.setAttribute("totalUsers", userCount)}`。 5. **page对象** page对象等同于JSP页面的`javax.servlet.jsp....

    jsp隐含对象详细解析

    它主要用于处理JSP页面内部的操作。 9. **exception异常对象** - **类型**:`java.lang.Throwable` - **作用域**:`page` - **描述**:`exception`对象只在错误处理页面中可用,用于捕获并处理异常。当JSP页面...

    基于BP神经网络的共享单车调度优化.pdf

    正向传播时,信号从输入层输入,经隐含层进行处理,最后传向输出层输出。当输出与期望值不相符时,则将误差信号按原来正向传播的通路反向传回,并修改隐含层的各个神经元的权系数,使误差信号达到最小值。 2. 共享...

    jsp的九个隐含对象

    5. **application对象**:也称为ServletContext,它在整个Web应用程序的生命周期内存在,适用于全局信息的共享。`application.getAttribute()`和`application.setAttribute()`分别用于获取和设置应用级别的属性。 6...

    行业文档-设计装置-地理数据网络共享平台的水印自动嵌入方法及装置.zip

    水印技术是一种常见的数字版权保护手段,它可以在不显著影响原始数据内容的情况下,嵌入一种隐含的信息,如作者姓名、时间戳或特定标识等。在地理数据中应用水印,可以为每一份共享的数据添加独特的标识,以便于追踪...

    EXCEL数据处理教案.pdf

    - 常见错误的排查与解决方法,例如#NAME?、#VALUE!等错误信息的处理 由于文件内容信息缺失,以上知识点是根据标题“EXCEL数据处理教案.pdf”所能推测的可能内容。实际的教案内容可能会包含更详细的操作步骤、实例...

    JAVA网络编程:第3章 JSP隐含对象1.ppt

    【Java网络编程】第三章主要探讨了JSP(JavaServer Pages)中的隐含对象,特别是与属性作用域、输入/输出、Servlet以及错误处理相关的对象。JSP隐含对象是预定义的变量,可以直接在JSP页面中使用,无需显式声明。 ...

    jsp九大隐含对象及注解

    它可以在整个应用范围内共享数据,比如配置信息、全局变量等。此外,`application` 对象还可以提供对Web应用资源的访问。 - **示例**: ```java application.setAttribute("appVersion", "1.0"); ``` 6. **...

    大数据-算法-中国肿瘤数据共享系统.pdf

    在算法方面,该系统采用了基于大数据分析的算法来处理大量的肿瘤数据,包括数据挖掘、机器学习和数据可视化等技术,以便更好地挖掘肿瘤数据中的隐含信息,提供更加精准的肿瘤诊断和治疗方案。 在数据结构方面,该...

    计算机系统结构课件:第8章 多处理机.ppt

    2. MIMD系统结构的选择:MIMD系统结构是当前通用多处理机系统结构的选择,因为它具有灵活性和可以充分利用商品化微处理器在性能价格比方面的优势。 3. 并行计算机系统结构的分类:根据系统中处理器个数的多少,可以...

    BP神经网络算法对高校教学资源共享平台检索的优化探讨.pdf

    通过对这些数据进行学习,BP神经网络能够捕捉到检索需求与资源内容之间的隐含关联,进而调整检索算法,使得检索结果更加精确。 在检索优化方面,BP神经网络算法能够利用其结构特性进行多层信息处理。首先是输入层,...

    浅谈jsp中的9个隐含对象

    它提供了对其他八个隐含对象的访问方法,是一种域对象,这意味着它在当前页面内是唯一的,且它的属性只能在当前页面被访问。 2. request对象 request对象是HttpServletRequest类型的,它代表了客户端的请求。通过这...

    从JVM内存管理的角度谈谈静态方法和静态属性

    静态属性在类加载时分配空间,存储在方法区(Method Area)中,这部分内存是所有类共享的。基本类型的静态属性直接存储值,而引用类型的静态属性存储的是对象在堆中的地址。静态属性可以通过类名直接访问,而无需...

    基于Python的“地理处理”并行方案.pdf

    最后,文章通过具体的实例,展示了如何使用Python结合Arcpy实现并行处理,并详细描述了并行处理策略的设计与实施过程,为地理信息系统应用与优化提供了专业指导。这项研究不仅增强了ArcGIS工具执行效率,还为解决...

    大数据下的资源整合和知识共享(上)xx年考试答案.doc

    这些特性使得大数据区别于传统数据处理,它处理的数据量巨大,处理速度极快,并且涵盖了各种类型的数据来源。此外,还有一个隐含的特征,即Veracity(真实性),强调数据的质量和准确性。大数据的这些特点使其在决策...

    大数据下的资源整合和知识共享(上)考试答案-3页.pdf

    大数据并非万能,但与传统的推理预测方法结合,可以提升预测的准确性。例如,Netflix通过大数据分析用户偏好,制作并推荐符合用户口味的电影,如《纸牌屋》的制作就是大数据应用的成功案例。 云计算也是大数据处理...

    地理信息系统原理.pdf

    地理信息系统(GIS)是现代信息技术在地理领域的应用,它整合了计算机硬件、软件以及特定方法,用于处理空间数据,以支持决策和管理。GIS的核心在于其能够采集、管理、处理、分析、建模和显示空间数据,从而解决复杂...

Global site tag (gtag.js) - Google Analytics