1) { std-6ren">
gpt4 book ai didi

c++ - std::vector::erase 与 "swap and pop"

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:56 30 4
gpt4 key购买 nike

从 vector 中删除元素的“正常”方式是这样的:

vec.erase(vec.begin() + index);

但理论上这样做会更快:

if (vec.size() > 1)
{
std::iter_swap(vec.begin() + index, vec.end() - 1);
vec.pop_back();
}
else
{
vec.clear();
}

有什么理由不使用后者吗?

最佳答案

第二种情况不保留 vector 中元素的顺序。如果这是一个已排序的 vector 或顺序很重要,那么在第一种情况下,您刚刚打破了第二种情况,而第一种情况将使顺序保持不变。

关于c++ - std::vector::erase 与 "swap and pop",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34994311/

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