vector删除元素可用erase
与remove
,但是使用erase
后vector本身size()随之变化,而使用remove
后vector本身size()并没有变化,只有迭代器指向变了!!!所以使用remove
后不建议用size()遍历元素,容易出bug!!!
remove
可以删除所有指定元素,删除后size()
并没有变化,remove
命令返回迭代器,指向更新后的末尾(记为iter),但是对于vector本身的end()
而言并没有变化,这也是size()
没有变化的原因,size()
没有变化的话就不能依靠size()
遍历,因为我们知道删除元素后的末尾迭代器,所以可以利用迭代器遍历,即for(auto it = mymap.begin(); it != iter; it++)
。
如果使用remove
命令后需要size()
也相应改变的话,添加使用erase
删除iter
到end()
的部分,即mymap.erase(iter, mymap.end())
。