当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ list erase()用法及代码示例


list::erase()是C++ STL中的内置函数,用于从列表容器中删除元素。此函数可用于从指定的列表容器中删除单个元素或一系列元素。

用法:

iterator list_name.erase(iterator position)

or,

iterator list_name.erase(iterator first, iterator last)

参数:此函数可以接受不同的参数,具体取决于它是用于从列表容器中删除单个元素还是元素范围。


  • position:当该函数用于删除单个元素时,使用此参数。此参数表示一个迭代器,该迭代器指向需要从列表容器中删除的元素。
  • first,last:当列表用于擦除范围内的元素时,将使用这两个参数。参数first指向该范围内第一个元素的迭代器,参数last指向该范围内需要删除的最后一个元素的迭代器。这将擦除范围中的所有元素,包括第一个由迭代器指向的元素,但排除最后一个由迭代器指向的元素。

返回值:此函数返回一个迭代器,该迭代器指向列表容器中的元素,该元素后面是从列表容器中删除的最后一个元素。

以下示例程序旨在说明list::erase()函数。

程序1::删除单个元素。

// CPP program to illustrate the 
// list::erase() function 
#include <bits/stdc++.h> 
using namespace std; 
  
int main() 
{ 
    // Creating a list 
    list<int> demoList; 
  
    // Add elements to the List 
    demoList.push_back(10); 
    demoList.push_back(20); 
    demoList.push_back(30); 
    demoList.push_back(40); 
    demoList.push_back(50); 
  
    // Printing elements of list before deleting 
    // first element 
    cout << "List before deleting first element: "; 
    for (auto itr = demoList.begin(); 
         itr != demoList.end(); itr++) { 
        cout << *itr << " "; 
    } 
  
    // Creating iterator to point to first 
    // element in the list 
    list<int>::iterator itr = demoList.begin(); 
  
    // deleting the first element 
    demoList.erase(itr); 
  
    // Printing elements of list after deleting 
    // first element 
    cout << "\nList after deleting first element:"; 
    for (auto itr = demoList.begin(); 
         itr != demoList.end(); itr++) { 
        cout << *itr << " "; 
    } 
  
    return 0; 
}
输出:
List before deleting first element: 10 20 30 40 50 
List after deleting first element:20 30 40 50

程序2::删除一系列元素。

// CPP program to illustrate the 
// list::erase() function 
#include <bits/stdc++.h> 
using namespace std; 
  
int main() 
{ 
    // Creating a list 
    list<int> demoList; 
  
    // Add elements to the List 
    demoList.push_back(10); 
    demoList.push_back(20); 
    demoList.push_back(30); 
    demoList.push_back(40); 
    demoList.push_back(50); 
  
    // Printing elements of list before deleting 
    // any element 
    cout << "List before deleting any element: "; 
    for (auto itr = demoList.begin(); 
         itr != demoList.end(); itr++) { 
        cout << *itr << " "; 
    } 
  
    // Creating iterators of the list 
    list<int>::iterator itr1, itr2; 
    itr1 = demoList.begin(); 
    itr2 = demoList.begin(); 
  
    // Incrementing itr2 by 3 positions 
    advance(itr2, 3); 
  
    // deleting range of elements from index [0, 3) 
    demoList.erase(itr1, itr2); 
  
    // Printing elements of list after deleting 
    // range of elements from [0, 3) 
    cout << "\nList after deleting first three elements: "; 
    for (auto itr = demoList.begin(); 
         itr != demoList.end(); itr++) { 
        cout << *itr << " "; 
    } 
  
    return 0; 
}
输出:
List before deleting any element: 10 20 30 40 50 
List after deleting first three elements: 40 50

注意:此函数以线性时间复杂度工作,即从列表容器中删除的元素数。



相关用法


注:本文由纯净天空筛选整理自barykrg大神的英文原创作品 list erase() function in C++ STL。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。