gpt4 book ai didi

c++ - 删除集合迭代器值并递增迭代器

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:49 25 4
gpt4 key购买 nike

我见过一个程序员写过这个。

auto it=myset.lower_bound(x);
myset.erase(it++);

如果我已经删除了当前迭代指针值,如何通过后自增运算符获取下一个迭代指针?

最佳答案

当你打电话时

myset.erase(it++);

一些事情发生了。首先 it++ 在被传递给函数之前被求值。当您评估 it++ 时,其结果是 it 并且这就是传递给函数的内容。因此,您的函数获取 it 的值,但调用站点中 it 的值是递增后的值。这意味着当 erase 删除迭代器指向的元素时,它正在删除旧迭代器指向的你不再拥有的元素。这是从 set 中删除元素的完全有效且安全的方法。

作为替代方案,从 C++11 开始,erase 返回下一个有效迭代器,因此您可以使用

it = myset.erase(it);

同样的效果。

关于c++ - 删除集合迭代器值并递增迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41959511/

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