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


C++ multimap::erase()用法及代碼示例


    multimap::erase()是C++ STL中的內置函數,用於從容器中擦除元素。它可用於擦除鍵,位於任何指定位置或給定範圍的元素。
  1. 擦除 key 的語法:
    multimap_name.erase(key)
    

    參數:該函數接受一個強製性參數鍵,該鍵指定要在多圖容器中擦除的鍵。

    返回值:該函數不返回任何內容。它使用指定的鍵擦除所有元素。


    // C++ program to illustrate 
    // multiset::erase(key) 
    #include <bits/stdc++.h> 
    using namespace std; 
      
    int main() 
    { 
      
        // initialize container 
        multimap<int, int> mp; 
      
        // insert elements in random order 
        mp.insert({ 2, 30 }); 
        mp.insert({ 1, 40 }); 
        mp.insert({ 3, 60 }); 
        mp.insert({ 2, 20 }); 
        mp.insert({ 5, 50 }); 
      
        // prints the elements 
        cout << "The multimap before using erase() is:\n"; 
        cout << "KEY\tELEMENT\n"; 
        for (auto itr = mp.begin(); itr != mp.end(); ++itr) { 
            cout << itr->first 
                 << '\t' << itr->second << '\n'; 
        } 
      
        // function to erase given keys 
        mp.erase(1); 
        mp.erase(2); 
      
        // prints the elements 
        cout << "\nThe multimap after applying erase() is:\n"; 
        cout << "KEY\tELEMENT\n"; 
        for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) { 
            cout << itr->first 
                 << '\t' << itr->second << '\n'; 
        } 
        return 0; 
    }
    輸出:
    The multimap before using erase() is:
    KEY    ELEMENT
    1    40
    2    30
    2    20
    3    60
    5    50
    
    The multimap after applying erase() is:
    KEY    ELEMENT
    5    50
    3    60
    
  2. 刪除頭寸的語法:
    multimap_name.erase(iterator position)
    

    參數:該函數接受一個強製性參數位置,該位置指定迭代器,該迭代器是要刪除元素的位置的參考。

    返回值:該函數不返回任何內容。

    以下示例程序旨在說明上麵的語法:

    // C++ program to illustrate 
    // multiset::erase(position) 
    #include <bits/stdc++.h> 
    using namespace std; 
      
    int main() 
    { 
      
        // initialize container 
        multimap<int, int> mp; 
        // insert elements in random order 
        mp.insert({ 2, 30 }); 
        mp.insert({ 1, 40 }); 
        mp.insert({ 3, 60 }); 
        mp.insert({ 2, 20 }); 
        mp.insert({ 5, 50 }); 
      
        // prints the elements 
        cout << "The multimap before using erase() is:\n"; 
        cout << "KEY\tELEMENT\n"; 
        for (auto itr = mp.begin(); itr != mp.end(); ++itr) { 
            cout << itr->first 
                 << '\t' << itr->second << '\n'; 
        } 
      
        // function to erase given position 
        auto it = mp.find(2); 
        mp.erase(it); 
      
        auto it1 = mp.find(5); 
        mp.erase(it1); 
      
        // prints the elements 
        cout << "\nThe multimap after applying erase() is:\n"; 
        cout << "KEY\tELEMENT\n"; 
        for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) { 
            cout << itr->first 
                 << '\t' << itr->second << '\n'; 
        } 
        return 0; 
    }
    輸出:
    The multimap before using erase() is:
    KEY    ELEMENT
    1    40
    2    30
    2    20
    3    60
    5    50
    
    The multimap after applying erase() is:
    KEY    ELEMENT
    3    60
    2    20
    1    40
    
  3. 刪除給定範圍的語法:
    multimap_name.erase(iterator position1, iterator position2)
    

    參數:該函數接受兩個強製性參數,如下所述:

    • position1-指定迭代器,該迭代器是要從中進行刪除的元素的引用。
    • position2-指定迭代器,該迭代器是要進行刪除的元素的引用。

    返回值:該函數不返回任何內容。它刪除給定範圍的迭代器中的所有元素。

    以下示例程序旨在說明上麵的語法:

    // C++ program to illustrate 
    // multiset::erase() 
    #include <bits/stdc++.h> 
    using namespace std; 
      
    int main() 
    { 
      
        // initialize container 
        multimap<int, int> mp; 
        // insert elements in random order 
        mp.insert({ 2, 30 }); 
        mp.insert({ 1, 40 }); 
        mp.insert({ 3, 60 }); 
        mp.insert({ 2, 20 }); 
        mp.insert({ 5, 50 }); 
      
        // prints the elements 
        cout << "The multimap before using erase() is:\n"; 
        cout << "KEY\tELEMENT\n"; 
        for (auto itr = mp.begin(); itr != mp.end(); ++itr) { 
            cout << itr->first 
                 << '\t' << itr->second << '\n'; 
        } 
      
        // function to erase in a given range 
        // find() returns the iterator reference to 
        // the position where the element is 
        auto it1 = mp.find(2); 
        auto it2 = mp.find(5); 
        mp.erase(it1, it2); 
      
        // prints the elements 
        cout << "\nThe multimap after applying erase() is:\n"; 
        cout << "KEY\tELEMENT\n"; 
        for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) { 
            cout << itr->first 
                 << '\t' << itr->second << '\n'; 
        } 
        return 0; 
    }
    輸出:
    The multimap before using erase() is:
    KEY    ELEMENT
    1    40
    2    30
    2    20
    3    60
    5    50
    
    The multimap after applying erase() is:
    KEY    ELEMENT
    5    50
    1    40
    


相關用法


注:本文由純淨天空篩選整理自gopaldave大神的英文原創作品 multimap::erase() in C++ STL。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。