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


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


    map::erase()是C++ STL中的内置函数,用于从容器中擦除元素。它可用于擦除键,位于任何指定位置或给定范围的元素。
  1. 擦除 key 的语法:
    map_name.erase(key)
    

    参数:该函数接受一个强制性参数 key ,该参数指定要在Map容器中擦除的 key 。

    返回值:如果在映射中找到关键元素,则函数返回1,否则返回0。
    以下示例程序旨在说明上面的语法:


    // C++ program to illustrate 
    // map::erase(key) 
    #include <bits/stdc++.h> 
    using namespace std; 
      
    int main() 
    { 
      
        // initialize container 
        map<int, int> mp; 
      
        // insert elements in random order 
        mp.insert({ 2, 30 }); 
        mp.insert({ 1, 40 }); 
        mp.insert({ 3, 60 }); 
        mp.insert({ 5, 50 }); 
      
        // prints the elements 
        cout << "The map 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 map after applying erase() is : \n"; 
        cout << "KEY\tELEMENT\n"; 
        for (auto itr = mp.begin(); itr != mp.end(); ++itr) { 
            cout << itr->first 
                 << '\t' << itr->second << '\n'; 
        } 
        return 0; 
    }
    输出:
    The map before using erase() is : 
    KEY    ELEMENT
    1    40
    2    30
    3    60
    5    50
    
    The map after applying erase() is : 
    KEY    ELEMENT
    3    60
    5    50
    
  2. 删除头寸的语法:
    map_name.erase(iterator position)
    

    参数:该函数接受一个强制性参数位置,该位置指定迭代器,该迭代器是要删除元素的位置的参考。

    返回值:该函数不返回任何内容。

    以下示例程序旨在说明上面的语法:

    // C++ program to illustrate 
    // map::erase(position) 
    #include <bits/stdc++.h> 
    using namespace std; 
      
    int main() 
    { 
      
        // initialize container 
        map<int, int> mp; 
        // insert elements in random order 
        mp.insert({ 2, 30 }); 
        mp.insert({ 1, 40 }); 
        mp.insert({ 3, 60 }); 
        mp.insert({ 5, 50 }); 
      
        // prints the elements 
        cout << "The map 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 map after applying erase() is : \n"; 
        cout << "KEY\tELEMENT\n"; 
        for (auto itr = mp.begin(); itr != mp.end(); ++itr) { 
            cout << itr->first 
                 << '\t' << itr->second << '\n'; 
        } 
        return 0; 
    }
    输出:
    The map before using erase() is : 
    KEY    ELEMENT
    1    40
    2    30
    3    60
    5    50
    
    The map after applying erase() is : 
    KEY    ELEMENT
    1    40
    3    60
    
  3. 删除给定范围的语法:
    map_name.erase(iterator position1, iterator position2)
    

    参数:该函数接受两个强制性参数,如下所述:

    • position1–指定迭代器,该迭代器是要从中进行删除的元素的引用。
    • position2–指定迭代器,该迭代器是要进行删除的元素的引用。

    返回值:该函数不返回任何内容。它删除给定范围的迭代器中的所有元素。

    以下示例程序旨在说明上面的语法:

    // C++ program to illustrate 
    // map::erase() 
    #include <bits/stdc++.h> 
    using namespace std; 
      
    int main() 
    { 
      
        // initialize container 
        map<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 map 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 map after applying erase() is : \n"; 
        cout << "KEY\tELEMENT\n"; 
        for (auto itr = mp.begin(); itr != mp.end(); ++itr) { 
            cout << itr->first 
                 << '\t' << itr->second << '\n'; 
        } 
        return 0; 
    }
    输出:
    The map before using erase() is : 
    KEY    ELEMENT
    1    40
    2    30
    3    60
    5    50
    
    The map after applying erase() is : 
    KEY    ELEMENT
    1    40
    5    50
    


相关用法


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