gpt4 book ai didi

c++ - 对于可 move 类型,删除 std::vector 中间的元素仍然很昂贵吗?

转载 作者:可可西里 更新时间:2023-11-01 15:33:28 25 4
gpt4 key购买 nike

通常认为删除 std::vector 中间的元素代价高昂,因为它需要复制它之后的每个元素来填充空洞。

在 C++11 中,std::vector向下 move 所有元素,这应该非常快(如果仅与拷贝相关),至少我是这么认为的。当然,它在时间上仍然是线性的,但总的来说它应该比旧版本更快。

这是真的吗?我再也不用担心删除中间的某些对象了吗?

最佳答案

这取决于 vector 中的内容。如果它是 POD 或指针,我无法想象它会有什么不同。如果类实例复制起来很繁重,但可以非常快速地 move ,我希望使用 C++0x 可以加速。

但是,我认为如果从 std::vectors 中间删除元素是您代码中的瓶颈,那么 C++0x 可能不是正确的解决方法。考虑使用能够更好地处理此类情况的数据结构,或者如果元素的顺序无关紧要,则使用 std::iter_swap 加上 std::vector::pop_back

关于c++ - 对于可 move 类型,删除 std::vector 中间的元素仍然很昂贵吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6557158/

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