gpt4 book ai didi

c++ - 使用 reverse_iterator 删除最后一个元素

转载 作者:行者123 更新时间:2023-11-28 00:13:58 27 4
gpt4 key购买 nike

最近我在维护的代码中发现了以下内容:

for (reverse_iterator rit = base_container::rbegin(); rit != base_container::rend() && 0 < N; N--) 
{
another_container->push_back(*rit);
base_container::erase((++rit).base());
}

它尝试使用 reverse_iterator 在循环中从容器(在本例中为 std::list)中移除最后一个元素。关键是它看起来应该可以正常工作,但实际上并没有(由于迭代器无效而导致一些内存损坏),我想知道为什么?是否有任何限制或规则不能这样做?

谢谢。

附言为了防止对解决方案进行任何改进,我已经重写了它以使其工作。问题是为什么上面的代码不能正常工作?

最佳答案

调用erase 后的所有迭代器都将失效。但是,erase 会返回一个您可以使用的迭代器。

关于c++ - 使用 reverse_iterator 删除最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31517270/

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