📜  C++ STL-Set.erase()函数(1)

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

C++ STL-Set.erase()函数

简介

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:前闭后开区间的迭代器,指定了一段从firstlast-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。
  • 在删除元素时,容器的size也相应地减小了。