stl list中erase和remove區別

list中remove和erase都是刪除一個元素,其中remove參數類型和數據類型一致,而erase參數類型是迭代器。
remove(aim)是刪除鏈表中的aim元素,如有多個aim,都會刪除,而
erase(it)是刪除迭代器指定位置的元素,而且返回下一個位置的迭代器來看例子。ios

#include <iostream>
#include <list>
using namespace std;
void MyRemove(list<int>& MyList, int aim) {
    MyList.remove(aim);
}
void MyErase(list<int>& MyList, list<int>::iterator ptr) {
    if (ptr != MyList.end()) {
        auto it = MyList.erase(ptr);
        if (it != MyList.end()) {   //若此時ptr指向list最後一個元素,則it爲最後一個元素以後的迭代器
            cout << "下一個元素的值爲" << *it << endl;
        }
    }
}
int main() {
    list<int>MyList;
    MyList.push_back(1);//list支持雙向插入哦 push_back 尾插 push_front 頭插
    MyList.push_back(2);
    MyList.push_back(3);
    MyList.push_back(4);
    MyList.push_back(4);
    //MyRemove(MyList,4);
    MyErase(MyList,MyList.begin());
    auto it = MyList.begin();
    while (it != MyList.end()) {
        cout << *it << endl;
        it++;
    }
    getchar();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
執行MyRemove(MyList,4),能夠看到list中全部的4都被刪除了,系統源代碼中的remove就是利用for循環來刪除的。函數

執行MyErase(MyList,MyList.begin()) 是刪除指定位置的元素,返回下一個元素的迭代器,若刪除的是鏈表最後一個元素,則返回最後一個元素以後的迭代器,因此得要判斷迭代器沒有越界。spa


List經常使用操做函數:.net

Lst1.assign() 給list賦值
Lst1.back() 返回最後一個元素
Lst1.begin() 返回指向第一個元素的迭代器
Lst1.clear() 刪除全部元素
Lst1.empty() 若是list是空的則返回true
Lst1.end() 返回末尾的迭代器
Lst1.erase() 刪除一個元素
Lst1.front() 返回第一個元素
Lst1.get_allocator() 返回list的配置器
Lst1.insert() 插入一個元素到list中
Lst1.max_size() 返回list能容納的最大元素數量
Lst1.merge() 合併兩個list
Lst1.pop_back() 刪除最後一個元素
Lst1.pop_front() 刪除第一個元素
Lst1.push_back() 在list的末尾添加一個元素
Lst1.push_front() 在list的頭部添加一個元素
Lst1.rbegin() 返回指向第一個元素的逆向迭代器
Lst1.remove() 從list刪除元素
Lst1.remove_if() 按指定條件刪除元素
Lst1.rend() 指向list末尾的逆向迭代器
Lst1.resize() 改變list的大小
Lst1.reverse() 把list的元素倒轉
Lst1.size() 返回list中的元素個數
Lst1.sort() 給list排序
Lst1.splice() 合併兩個list
Lst1.swap() 交換兩個list
Lst1.unique() 刪除list中重複的元素
--------------------- 
做者:~AC~ 
來源:CSDN 
原文:https://blog.csdn.net/qq_42673507/article/details/86678625 
版權聲明:本文爲博主原創文章,轉載請附上博文連接!blog

相關文章
相關標籤/搜索