公有成員函數
std::list::remove
void remove(const value_type& val);
刪除與給定值相等的元素
從容器中刪除所有與 val 值相等的元素。list::remove 函數刪除給定元素時,會調用被刪除對象的析構函數,並且縮小相應大小的容器 size 。
list::remove 與另一個成員函數 list::erase 不同,后者使用迭代器來確定需要被刪除的元素;前者通過數值的方式來確定被刪除元素。
有一個與 list::remove 相似的函數—— list::remove_if ——它允許使用一個“仿函數”來確定被刪除元素。
參數
val
被刪除元素的值。
成員類型 value_type 是容器中元素的類型,作為一個模板參數 T 的別名,被定義在 list 中。
返回值
沒有返回值
用例
// remove from list #include <iostream> #include <list> int main () { int myints[]= {17,89,7,14}; std::list<int> mylist (myints,myints+4); mylist.remove(89); std::cout << "mylist contains:"; for (std::list<int>::iterator it=mylist.begin(); it!=mylist.end(); ++it) std::cout << ' ' << *it; std::cout << '\n'; return 0; }
輸出 :
mylist contains: 17 7 14
復雜度
線性復雜度,取決於容器 size 。 O(n)
迭代器的有效性
指向已被函數移除的元素的迭代器、指針和引用是非法的。不影響指向其他元素的指針、迭代器和引用。
數據種類
容器是經過改進的
被刪除的元素會被修改。盡管遍歷容器是不安全的,但並發訪問或者修改其他元素是安全的。
異常安全
如果比較兩個元素不會拋出異常,那么 list::remove 將不會拋出異常。(可以確保不會拋出異常)
否則,如果一個異常被拋出,容器會留下一個有效狀態。(基本能夠保證)
參閱
list::remove_if | 移除滿足條件的元素 |
list::erase | 擦除元素 |
list::unique | 移除重復元素 |
list::pop_back | 刪除最靠后的元素 |
list::pop_front | 刪除最靠前的元素 |
感謝
Mengmeng Zhang