📜  C++ STL中的unordered_set delete()函数

📅  最后修改于: 2021-05-30 03:47:18             🧑  作者: Mango

unordered_set :: erase()函数是C++ STL中的内置函数,用于删除从start(包括)到end(不包括)在内的一系列元素中的单个元素。这通过删除的元素数量减少了容器的大小。

注意:unordered_set中的存储桶编号从0到n-1,其中n是存储桶的总数。

语法

unordered_set_name.erase(iterator start, iterator end)
          or 
unordered_set_name.erase(iterator position)
          or
unordered_set_name.erase(element)

参数:该函数接受三种类型的参数。如果它接受单个元素,则它将找到该特定元素并将其删除。如果它接受迭代器,则它将擦除该位置上存在的元素。如果它接受两个迭代器start和end,它将删除[start,end]范围内的所有元素。

返回值:该函数返回一个迭代器,该迭代器指向最后一个元素之后的元素,如果使用前两种语法,则该元素将被删除。在第三种语法的情况下,如果元素存在于unordered_set中,则返回1;否则,在擦除该元素后返回0。

下面的程序说明了unordered_set :: erase()函数:

程序1

// CPP program to illustrate the
// unordered_set::erase() function
  
#include 
#include 
  
using namespace std;
  
int main()
{
  
    unordered_set sampleSet;
  
    // Inserting elements
    sampleSet.insert(5);
    sampleSet.insert(10);
    sampleSet.insert(15);
    sampleSet.insert(20);
    sampleSet.insert(25);
  
    // erases a particular element by its position
    sampleSet.erase(sampleSet.find(10));
  
    // displaying the set after removal
    for (auto it = sampleSet.begin(); it != sampleSet.end(); it++) {
        cout << *it << " ";
    }
  
    // erases a range of elements
    sampleSet.erase(sampleSet.begin(), sampleSet.end());
  
    cout << "\nSet size: " << sampleSet.size();
  
    return 0;
}

输出

25 5 15 20  
Set size: 0

程序2

// CPP program to illustrate the
// unordered_set::erase() function
  
#include 
#include 
#include 
  
using namespace std;
  
int main()
{
  
    unordered_set sampleSet = { "geeks1", "for", "geeks2" };
  
    // erases a particular element
    sampleSet.erase("geeks1");
  
    // displaying the set after removal
    cout << "Elements: ";
    for (auto it = sampleSet.begin(); it != sampleSet.end(); it++) {
        cout << *it << " ";
    }
  
    sampleSet.insert("geeks1");
    // erases from where for is
    sampleSet.erase(sampleSet.find("for"), sampleSet.end());
  
    // displaying the set after removal
    cout << "\nAfter second removal set : ";
    for (auto it = sampleSet.begin(); it != sampleSet.end(); it++) {
        cout << *it << " ";
    }
  
    return 0;
}

输出

Elements: geeks2 for 
After second removal set : geeks1 geeks2 
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”