【发布时间】:2015-11-30 18:57:48
【问题描述】:
看看这段代码摘录:
while( *it <= *it_end and it != myset.end() )
if(foo(*it++))
return true;
it 和 it_end 是 std::set(RB 树)的有效迭代器。
foo 将:
- 删除
it,再插入一个与*it值相同的元素,返回false; - 删除
it并返回true。
我的问题:
运行这个循环是否安全?
在调用 foo 之前,it 将是树的下一个元素的有效迭代器,但是我担心 std::set 内部的一些内在魔法会使该迭代器无效,例如自平衡算法RB树。
【问题讨论】:
标签: c++ tree red-black-tree