multiset erase()在C++ STL中
先决条件: multiset
multiset::erase() 是C++ STL中的函数,用于从multiset中移除指定的元素。
该方法有三个版本。它们是:
- 语法:
void erase (iterator position_of_iterator);
参数: 此方法接受以下参数:
- position_of_iterator: 它指的是通过迭代器删除特定元素的位置。
返回值: 此方法返回删除元素后的迭代器。
下面的例子说明了multiset::erase()方法的工作原理:
// C++程序示例
// multiset::erase() 方法
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 初始化multiset
multiset<int> multi_set;
multiset<int>::iterator ms_iterator;
// 向multiset添加value
for (int i = 1; i < 10; i++) {
multi_set.insert(i);
}
cout << "原始multiset: ";
for (ms_iterator = multi_set.begin();
ms_iterator != multi_set.end();
++ms_iterator)
cout
<< ' ' << *ms_iterator;
cout << '\n';
ms_iterator = multi_set.begin();
ms_iterator++;
// 传递iterator,以删除特定位置的值
multi_set.erase(ms_iterator);
cout << "修改后的multiset: ";
for (ms_iterator = multi_set.begin();
ms_iterator != multi_set.end();
++ms_iterator)
cout << ' ' << *ms_iterator;
cout << '\n';
return 0;
}
输出:
原始multiset: 1 2 3 4 5 6 7 8 9
修改后的multiset: 1 3 4 5 6 7 8 9
- 语法:
size_type erase (const value_type& contant_value);
参数: 此方法接受以下参数:
- constant_value : 它指的是通过值从multiset删除特定元素。它必须是常数。该方法将删除此值的所有实例。
返回值: 此方法返回已被删除的值的数量。
下面的例子说明了multiset::erase()方法的工作原理:
// C++程序示例
// multiset::erase() 方法
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 初始化multiset
multiset<int> multi_set;
multiset<int>::iterator ms_iterator;
// 向multiset添加value
for (int i = 1; i < 10; i++) {
multi_set.insert(i);
}
cout << "原始multiset: ";
for (ms_iterator = multi_set.begin();
ms_iterator != multi_set.end();
++ms_iterator)
cout << ' ' << *ms_iterator;
cout << '\n';
ms_iterator = multi_set.begin();
// 传递constant_value使之被删除
int num = multi_set.erase(2);
cout << "修改后的multiset: "
<< "(" << num <<< ")"
<< "被删除";
for (ms_iterator = multi_set.begin();
ms_iterator != multi_set.end();
++ms_iterator)
cout << ' ' << *ms_iterator;
cout << '\n';
return 0;
}
输出:
原始multiset: 1 2 3 4 5 6 7 8 9
修改后的multiset:(1)被删除 1 3 4 5 6 7 8 9
- 语法:
void erase (iterator starting_iterator, iterator ending_iterator);
参数: 此方法接受以下参数:
- starting_iterator : 它指的是要从multiset中删除的值范围的起始迭代器。
- ending_iterator : 它指的是要从multiset中删除的值范围的结束迭代器。
返回值: 此方法没有返回值。
下面的例子说明了multiset::erase()方法的工作原理:
// C++程序示例
// multiset::erase() 方法
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 初始化multiset
multiset<int> multi_set;
multiset<int>::iterator ms_iterator;
multiset<int>::iterator start_iterator;
multiset<int>::iterator end_iterator;
// 向multiset添加value
for (int i = 1; i < 10; i++) {
multi_set.insert(i);
}
cout << "原始multiset: ";
for (ms_iterator = multi_set.begin();
ms_iterator != multi_set.end();
++ms_iterator)
cout << ' ' << *ms_iterator;
cout << '\n';
start_iterator = multi_set.begin();
end_iterator = multi_set.find(6);
// 通过起始和结束迭代器删除值
multi_set.erase(start_iterator, end_iterator);
cout << "修改后的multiset: ";
for (ms_iterator = multi_set.begin();
ms_iterator != multi_set.end();
++ms_iterator)
cout << ' ' << *ms_iterator;
cout << '\n';
return 0;
}
输出:
原始multiset: 1 2 3 4 5 6 7 8 9
修改后的multiset: 6 7 8 9
- ending_iterator:它是要从multiset中删除的值范围的结束迭代器。
返回值:此方法返回最后一个被删除元素的下一个迭代器或终止迭代器。
以下示例说明了multiset :: erase()方法的工作原理:
// C ++程序演示
// multiset :: erase()方法
#include<bits / stdc ++。h>
使用命名空间std;
int main()
{
//初始化多集
multiset<int> multi_set;
multiset<int> :: iterator ms_iterator;
//将值添加到多集中
for(int i = 1; i<10; i ++){
多集插入(i);
}
cout<<“原始多集:”;
为(ms_iterator = multi_set.begin();
ms_iterator!= multi_set.end();
++ ms_iterator)
cout<<'+'<<* ms_iterator;
cout<<'\ n';
ms_iterator = multi_set.begin();
ms_iterator ++;
ms_iterator ++;
//传递要删除值所在的位置的迭代器范围
auto ir = multi_set.erase(ms_iterator,multi_set.end());
cout<<“修改的多集:”;
为(ms_iterator = multi_set.begin();
ms_iterator!= multi_set.end();
++ ms_iterator)
cout<<'+'<<* ms_iterator;
cout<<'\ n';
(ir == multi_set.end())
?cout<<“返回值为:multi_set。end()\ n”
:cout
<<“返回值不是multi_set.end()\ n”;
返回0;
}
输出:
原始多集:1 2 3 4 5 6 7 8 9
修改的多集:1 2
返回值为:multi_set.end();