天天看點

vector中的删除,earse和remove的小疑惑--【STL】

對于vector容器的使用,平時隻是簡單的進行周遊查找一下,未曾進行其它操作,這不,今天出了一點差錯;

erase方法的操作是将此時的節點删除,然後指向被删除節點的下一個:

如對資料1 6 6 4 7;

進行如上操作的結果為:

vector中的删除,earse和remove的小疑惑--【STL】

有一個6未成功删除,由于每次循環後都将疊代器arr++,在成功删除之後節點後移了一位,實際上在删除進行時是後移了兩位,故而在删除時:

有了arr--操作,就可抵消删除時的自動後移,進而成功進行:

vector中的删除,earse和remove的小疑惑--【STL】

當然,erase還有另外一個方法,就是删除兩個節點之間的全部元素,這時依靠remove操作将等于删除值的節點全部移到容器末尾,進行删除;

将上述for循環删除的注釋,将其上一行的vec.erase(remove(vec.begin(), vec.end(), 6), vec.end());注釋取消即可實作;

o(∩_∩)o

繼續閱讀