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
注意:此函数以线性时间复杂度工作,即从列表容器中删除的元素数。
相关用法
- C++ map erase()用法及代码示例
- C++ unordered_set erase()用法及代码示例
- C++ unordered_multiset erase()用法及代码示例
- C++ set::erase用法及代码示例
- C++ std::string::erase用法及代码示例
- C++ multiset erase()用法及代码示例
- C++ multimap::erase()用法及代码示例
- C++ unordered_map erase用法及代码示例
- C++ unordered_multimap erase用法及代码示例
- C++ vector erase()、clear()用法及代码示例
- C++ deque::clear()、deque::erase()用法及代码示例
- C++ list end()用法及代码示例
注:本文由纯净天空筛选整理自barykrg大神的英文原创作品 list erase() function in C++ STL。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。