C++ STL 中的 list erase() 函式
在本文中,我們將討論 C++ 中 list::erase() 函式的工作原理、語法和示例。
什麼是 STL 中的 List?
List 是一種資料結構,允許在序列中的任何位置進行恆定時間的插入和刪除操作。List 使用雙向連結串列實現。List 允許非連續記憶體分配。與陣列、向量和雙端佇列相比,List 在容器的任何位置執行元素的插入、提取和移動操作的效率更高。在 List 中,直接訪問元素的速度較慢,並且 List 與 forward_list 類似,但 forward_list 物件是單向連結串列,只能向前迭代。
什麼是 list::erase()?
list::erase() 是 C++ STL 中一個內建函式,在標頭檔案中宣告。erase() 用於從 list 容器中刪除元素。我們可以從 list 容器中刪除單個元素或一系列元素。它透過要刪除/擦除的元素數量來減小 list 容器的大小。
語法
list_container.erase(positon); list_container.erase(start_position, end_position);
此函式可以接受一個或兩個引數:
引數
position - 這是我們要從中刪除元素的單個位置。
start_position, end_position - 這定義了我們要從中刪除元素的範圍。
返回值
此函式返回一個迭代器,該迭代器指向最後一個被刪除元素的下一個元素。
示例
在下面的程式碼中,我們要使用 STL 中的 erase() 函式刪除元素,為此,我們將使用 begin() 函式獲取指向第一個元素的迭代器來獲取第一個元素,然後我們將刪除包含列表第一個元素的迭代器。
#include <bits/stdc++.h>
using namespace std;
int main(){
//Create a list
list<int> myList;
myList.push_back(2);
myList.push_back(4);
myList.push_back(6);
myList.push_back(8);
myList.push_back(10);
cout<<"List before deleting elements: ";
for (auto i = myList.begin(); i!= myList.end(); i++){
cout << *i<< " ";
}
//iterator that will point to the first element
list<int>::iterator i = myList.begin();
myList.erase(i);
//list after deleting the element
cout << "\nList after deleting elements: ";
for (auto i = myList.begin(); i!= myList.end(); i++){
cout << *i << " ";
}
return 0;
}輸出
如果我們執行上面的程式碼,它將生成以下輸出
List before deleting elements: 2 4 6 8 10 List after deleting elements: 4 6 8 10
示例
在下面的程式碼中,我們要使用 STL 中的 erase() 函式刪除元素,為此,我們將使用 begin() 函式獲取指向第一個元素的迭代器 (迭代器 1),並將另一個迭代器 (迭代器 2) 指向第二個元素,然後我們將刪除迭代器 1 和迭代器 2 之間的範圍內的迭代器,並顯示結果。
#include <bits/stdc++.h>
using namespace std;
int main(){
//Create a list
list<int> myList;
myList.push_back(2);
myList.push_back(4);
myList.push_back(6);
myList.push_back(8);
myList.push_back(10);
cout<<"List before deleting elements: ";
for (auto i = myList.begin(); i!= myList.end(); i++){
cout << *i << " ";
}
//iterator that will point to the first element
list<int>::iterator i_1, i_2;
i_1 = myList.begin();
i_2 = myList.begin();
//advance() function will increment the position of iterator 2 by 3
advance(i_2, 4);
//now it will delete the elements from the range 0 - 4
myList.erase(i_1, i_2);
//list after deleting the element
cout<< "\nList after deleting elements: ";
for (auto i = myList.begin(); i!= myList.end(); i++){
cout << *i << " ";
}
return 0;
}輸出
如果我們執行上面的程式碼,它將生成以下輸出
List before deleting elements: 2 4 6 8 10 List after deleting elements: 10
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP