📜  C++ STL中的set :: erase(1)

📅  最后修改于: 2023-12-03 15:29:50.948000             🧑  作者: Mango

C++ STL中的set :: erase

在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_iteratorend_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容器中的元素。掌握该函数可以帮助程序员更好地实现算法和数据结构。