gpt4 book ai didi

c++ - 当按值传递时,包含指针的 QList 将如何表现

转载 作者:太空宇宙 更新时间:2023-11-04 11:25:52 25 4
gpt4 key购买 nike

假设您有包含指针的 QList QList<SomeThingCool*>然后将其传递给带有签名 void doCoolStuff(QList<SomeThingCool*> list) 的方法这种调用对空间和时间有何影响?

我的猜测是会有一些开销,因为将创建 QList 对象的拷贝,但是我们不需要进行深度复制,因为我们正在处理指针。

行为上的一个区别是如果 doCoolStuff对列表进行修改,原始列表将保持不变。

最佳答案

您所写的内容对于通用 C++ 是正确的,但是 QList 以及其他一些 Qt 类在这方面有点特殊。是implicitly shared a class ,又名。 copy-on-write (COW) .这是什么意思,是吗?

对你的解释的唯一补充是,如果你不打算修改方法或函数体内的列表,你的列表将被隐式共享,这意味着共享数据指针将只是额外的空间限制。

如果您打算在函数或方法体内修改列表,那么将为列表制作一个深拷贝。自然地,您的指针仍将保持浅拷贝,因为它们是指针。

至于时间维度,通过对此类隐式使用此技术,如果不进行任何修改,则可以节省复制列表所花费的时间。

关于c++ - 当按值传递时,包含指针的 QList 将如何表现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26703496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com