gpt4 book ai didi

rust - Clone::clone_from 如何避免不必要的分配?

转载 作者:行者123 更新时间:2023-11-29 08:03:34 26 4
gpt4 key购买 nike

clone_from 的文档说:

Performs copy-assignment from source.

a.clone_from(&b) is equivalent to a = b.clone() in functionality, but can be overridden to reuse the resources of a to avoid unnecessary allocations.

为什么 clone_from(复制赋值)避免不必要的分配?什么是例子?

我认为这是 C++ 中众所周知的概念,但我没有很强的 C++ 背景。

最佳答案

让我们以两个向量 ab 为例。每个向量都必须分配一个内部缓冲区来存储元素。

以下是每种情况下发生的情况:

  • a = b.clone() 总是执行 b.clone(),这会创建一个带有自己缓冲区的全新向量,然后 a = brand_new_vector 丢弃 a 的缓冲区并从 brand_new_vector 窃取缓冲区。
  • a.clone_from(&b):如果a的buffer太小,它会分配一个足够大的buffer,但是如果a > 的缓冲区已经足够大,它会将每个元素从 b 直接复制到 a 的缓冲区。在后一种情况下,a 的缓冲区被回收,避免了内存分配。

关于rust - Clone::clone_from 如何避免不必要的分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56464300/

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