繁体   English   中英

std::vector::swap 与 std::vector::operator= 的性能

[英]Performance of std::vector::swap vs std::vector::operator=

给定两个长度相等的向量:

std::vector<Type> vec1;
std::vector<Type> vec2;

如果需要将vec1 vec2内容,是否更高效

vec2.swap(vec1);

或者

vec2 = vec1;

假设vec1将保留在 memory 但操作后的内容无关紧要? 另外,有没有我没有考虑过的更有效的方法?

swap将更有效,因为没有复制。 =将在vec1中创建vec2的副本,保持原件不变。

如果您查看文档,您会发现swap是常数,而=是线性的。

最具表现力的方式,也是最有效的方式,是:

vec2 = std::move(vec1);

在实践中,这可能会使vec1空,但基本上它只是意味着您不再关心它的内容,您希望将其移至vec2

它与交换一样有效,并且比复制分配更有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM