的文档clone_from说:
从源执行复制分配。
a.clone_from(&b)a = b.clone()在功能上等效,但是可以重写以重用a的资源,以避免不必要的分配。
为什么clone_from(复制分配)避免不必要的分配?有什么例子?
我认为这是C ++中众所周知的概念,但是我没有强大的C ++背景。
让我们举个例子两个向量a和b。每个向量都必须分配一个内部缓冲区来存储元素。
这是每种情况发生的情况:
a = b.clone()始终执行b.clone(),这将创建一个具有其自己缓冲区的全新向量,然后a = brand_new_vector扔掉a缓冲区并从中窃取brand_new_vector。a.clone_from(&b):如果a的缓冲区太小,它将分配足够大的缓冲区,但是如果a的缓冲区已经足够大,它将b直接将每个元素复制到a的缓冲区。在后一种情况下,a的缓冲区被回收,并且避免了内存分配。| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |