unordered_multiset erase()函数在C++ STL中的使用
unordered_multiset::erase()函数是C++ STL中的一个内置函数,用于删除单个元素或具有确定值的所有元素或某个范围内(从起始位置(包括)到结束位置(不包括)的)元素。执行此操作会减小容器的大小,减去已删除的元素数量。
语法 :
- unordered_multiset_name.erase(iterator position)
- unordered_multiset_name.erase(iterator start, iterator end)
- unordered_multiset_name.erase(key_value)
参数 : 该函数有三个版本。
- 第一个版本以迭代器作为参数,删除该位置上存在的元素。
- 第二个版本以两个迭代器(如start和end)作为参数,删除范围[start, end)内的所有元素。
- 第三个版本以键值作为参数,删除多个集合中的所有具有该值的元素。
返回值 : 如上面语法中所示,函数的第一和第二个版本会返回一个迭代器,其紧随被删除的最后一个元素。第三个版本将返回删除的元素数量。
下面的程序说明了unordered_multiset::erase()函数:
程序1 :
// C++ program to illustrate the
// unordered_multiset::erase() function
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_multiset<int> samplemultiSet;
// 插入元素
samplemultiSet.insert(10);
samplemultiSet.insert(5);
samplemultiSet.insert(15);
samplemultiSet.insert(20);
samplemultiSet.insert(25);
samplemultiSet.insert(10);
samplemultiSet.insert(15);
samplemultiSet.insert(20);
// 按位置删除特定元素
samplemultiSet.erase(samplemultiSet.begin());
// 删除一系列元素,这里是所有元素
samplemultiSet.erase(samplemultiSet.begin(),
samplemultiSet.end());
// 删除操作后显示集合
for (auto it = samplemultiSet.begin();
it != samplemultiSet.end(); it++)
{
cout << *it << " ";
}
cout << "\nMultiSet size: " << samplemultiSet.size();
return 0;
}
10 10 15 15 20 20 25
MultiSet size: 0
程序2 :
// C++ program to illustrate the
// unordered_multiset::erase() function
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_multiset<int> samplemultiSet;
// 插入元素
samplemultiSet.insert(10);
samplemultiSet.insert(5);
samplemultiSet.insert(15);
samplemultiSet.insert(20);
samplemultiSet.insert(25);
samplemultiSet.insert(10);
samplemultiSet.insert(15);
samplemultiSet.insert(20);
// 按值删除所有值为10的元素
samplemultiSet.erase(10);
// 删除操作后显示集合
for (auto it = samplemultiSet.begin();
it != samplemultiSet.end(); it++)
{
cout << *it << " ";
}
return 0;
}
5 15 15 20 20 25