📅  最后修改于: 2023-12-03 15:13:56.095000             🧑  作者: Mango
STL(Set)是C++标准库中提供的一个常用容器,用于存储不重复的元素,且按照一定顺序排列,Set容器中存储的元素是可排序的,并且在插入的时候会自动去重,因此Set容器可以快速查找某个元素是否存在。
Set容器定义在头文件<set>
中,其成员函数包括insert()
, erase()
, find()
, size()
等等。
本文将介绍Set
容器的erase()
函数,主要用于从Set
容器中删除元素。
set_name.erase(position)
set_name.erase(value)
set_name.erase(first, last)
set_name
:要删除元素的Set
容器。position
:在容器中要删除的元素的位置。value
:要删除的元素的值。first, last
:是一个迭代器对,指定一段要删除的元素的范围。position
:一个指向要删除元素的迭代器。erase()
函数将从Set
容器中删除此位置的元素。value
:要删除的元素的值。first, last
:前闭后开区间的迭代器,指定了一段从first
到last-1
的元素,将从Set
容器中删除这个范围内的元素。erase()
函数返回Set
容器中删除的元素数。#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> mySet;
set<int>::iterator it;
mySet.insert(1);
mySet.insert(3);
mySet.insert(5);
mySet.insert(7);
cout << "Before erase: ";
for (it = mySet.begin(); it != mySet.end(); it++)
{
cout << *it << " ";
}
cout << endl;
// 删除元素3
mySet.erase(3);
cout << "After erase 3: ";
for (it = mySet.begin(); it != mySet.end(); it++)
{
cout << *it << " ";
}
cout << endl;
// 删除第一个元素1
it = mySet.begin();
mySet.erase(it);
cout << "After erase first element: ";
for (it = mySet.begin(); it != mySet.end(); it++)
{
cout << *it << " ";
}
cout << endl;
// 删除第2-3个元素
it = mySet.begin();
advance(it, 1); // 移动到第二个元素
mySet.erase(it, mySet.end()); // 删除第2-3个元素
cout << "After erase 2-3th element: ";
for (it = mySet.begin(); it != mySet.end(); it++)
{
cout << *it << " ";
}
cout << endl;
return 0;
}
执行结果为:
Before erase: 1 3 5 7
After erase 3: 1 5 7
After erase first element: 5 7
After erase 2-3th element:
在使用erase()
函数时,要注意提供正确的参数。如果提供错误的参数,会导致程序崩溃。
erase()
函数会返回0。