最近我在维护的代码中发现了以下内容:
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)。关键是它看起来应该可以正常工作,但事实并非如此(由于无效的迭代器导致一些内存损坏),我想知道为什么?是否有任何限制或规则不这样做?
谢谢。
PS 为了防止对解决方案进行任何改进,我已经重写了它以使其工作。问题是为什么上面的代码不能正常工作?