📅  最后修改于: 2023-12-03 15:29:50.948000             🧑  作者: Mango
在C++中,STL(标准模板库)是一个重要而强大的工具,它提供了许多用于容器、算法等方面的函数和类。因此,对于C++程序员来说,掌握STL是一个必备的技能。
Set
是STL中的一个非常重要的容器,它提供了一种有序的、不重复的容器类型。在Set
中,我们可以使用erase
函数来删除一组元素。在本文中,我们将详细介绍在C++ STL中的set::erase
函数。
set::erase()
函数的语法以下是在C++ STL中使用set::erase()
函数的基本语法:
setname.erase(position); //删除某个元素
setname.erase(start_iterator, end_iterator); //删除区间[start_iterator,end_iterator)中所有的元素
setname.erase(key_value); //删除所有值为key_value的元素
在这里,setname
是一个已经定义好的set
容器,position
是一个iterator
用于指向待删除元素的位置,start_iterator
和end_iterator
是迭代器,用于指向区间内的起始位置和结束位置,key_value
是已知元素的值,用于删除所有具有该值的元素。
以下是一个使用set::erase()
函数来删除元素的示例代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
set<int> s;
s.insert(10);
s.insert(20);
s.insert(30);
s.insert(40);
cout << "原始的set中的元素: ";
for (auto i: s) cout << i << " ";
cout << endl;
// 删除某个元素
s.erase(20);
cout << "删除后的set中的元素: ";
for (auto i: s) cout << i << " ";
cout << endl;
// 删除一个区间内的所有元素
s.erase(s.begin(), s.end());
cout << "删除区间后的set: ";
for (auto i: s) cout << i << " ";
cout << endl;
// 删除所有值为40的元素
s.insert(10);
s.insert(20);
s.insert(30);
s.insert(40);
s.insert(40);
s.erase(40);
cout << "删除所有值为40的元素后的set: ";
for (auto i: s) cout << i << " ";
cout << endl;
return 0;
}
运行上面的程序,我们将会得到以下输出结果:
原始的set中的元素: 10 20 30 40
删除后的set中的元素: 10 30 40
删除区间后的set:
删除所有值为40的元素后的set: 10 20 30
从上面的示例中可以看出,我们可以使用set::erase
函数删除set
容器中的一个或多个元素。它能够同时使用迭代器和已知值来删除元素。
还可以使用一些其他函数来从set
容器中删除元素,例如:
clear()
函数用于删除所有元素,它将空集合。pop_back()
函数用于删除最后一个元素。pop_front()
函数用于删除第一个元素。总之,STL中的set::erase
函数是一个非常强大和灵活的工具,可以帮助程序员有效地操作set
容器中的元素。掌握该函数可以帮助程序员更好地实现算法和数据结构。