multiset erase()在C++ STL中

multiset erase()在C++ STL中

先决条件: multiset

multiset::erase() 是C++ STL中的函数,用于从multiset中移除指定的元素。

该方法有三个版本。它们是:

  1. 语法:
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
  1. 语法:
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
  1. 语法:
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();

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程