gpt4 book ai didi

c++ - std::vector move 而不是交换到空 vector 并取消分配存储

转载 作者:行者123 更新时间:2023-12-01 18:04:26 36 4
gpt4 key购买 nike

我是否理解正确的是,随着 C++11 中引入 move 语义,可以使用 move 代替交换到清除习惯用法来清空 vector (包括存储释放)?

std::vector<T>().swap( v );
// VS
v = std::move( std::vector<T>() );

第二种方法是否能保证与第一种方法一样有效?

PS。正如@MaximEgorushkin 指出的, std::move 中没有必要。上面因为分配了 r 值。

最佳答案

您可能将其与 std::vector<T>(v).swap(v); 混淆了- 修剪 vector 存储。

您无需调用std::move不过,当分配右值时,只需

v = std::vector<T>(v);

就够了。

关于c++ - std::vector move 而不是交换到空 vector 并取消分配存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52559120/

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