假设cont是一个Container 的示例,里面包含数个元素,那么当CONTAINER为:1.vector 2.list 3.deque 会导致下面的代码片段崩溃的Container 类型是( )int main(){Container cont = { 1, 2, 3, 4, 5};Container::iterator iter, tempIt;for (iter = cont.begin(); iter != cont.end();){tempIt = iter;++iter;cont.erase(tempIt);}
}
底层实现vector、deque底层都是用了连续空间,所以虽然++iter迭代器了,但是erase(tempit)以后底层是连续空间,删除会挪动数据,最终导致iter意义变了,已失效了。
而list,不是连续空间,删除以后tempIt虽然失效了,但是不影响iter
因此答案为1 3