当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ unordered_set erase()用法及代码示例


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

注意: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 <iostream> 
#include <unordered_set> 
  
using namespace std; 
  
int main() 
{ 
  
    unordered_set<int> 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 <iostream> 
#include <string> 
#include <unordered_set> 
  
using namespace std; 
  
int main() 
{ 
  
    unordered_set<string> 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 


相关用法


注:本文由纯净天空筛选整理自barykrg大神的英文原创作品 unordered_set erase() function in C++ STL。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。