1. 程式人生 > >vector刪除元素erase和通用演算法remove

vector刪除元素erase和通用演算法remove

vector::erase()和algorithm中的remove函式都可以用來刪除vector中的元素。

但是其中也有些區別。

erase函式的定義,通過迭代器來刪除單個或者範圍的元素
iterator erase(
   iterator _Where
);
iterator erase(
   iterator _First,
   iterator _Last
);
remove函式的定義
template<class _FwdIt, class _Ty> inline
    _FwdIt remove(_FwdIt _First, _FwdIt _Last, const _Ty% _Val);
與erase不同的是,remove函式刪除元素後並不會改變vector的大小,只是把後面的元素往前移,並返回一個指向vector末尾的新迭代器。
這樣,如果用remove後,還用vector的begin和end仍舊會得到原來序列的大小範圍的。
MARK:使用erase和remove函式都要注意刪除元素時必須注意是否需要釋放記憶體。如果vector存放的是指向動態建立物件的指標,那麼
必須確保指向的物件能夠釋放。