有 vector<int> v = {1, 2, 3, 4};,执行 auto it = v.begin() + 1;(此时 it 指向元素 2),接着执行 v.erase(it); 删掉这个元素。之后继续使用这个 it,会发生( )。
- A. it 仍然有效,而且自动往后移,指向下一个元素 3
- B. it 仍然有效,继续指向 2,因为 erase 不影响迭代器
- C. it 已经失效:erase 之后「删除位置之后」的迭代器全部作废,正确姿势是
it = v.erase(it)接住返回值 - D. 编译报错:erase 不能传入迭代器,只能传位置编号