當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。