English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمات C++ الأساسية

C++ 流程控制

الوظائف الخاصة بـ C++

C++ 数组 & 字符串

C++ 数据结构

C++ 类 & 对象

المؤشرات الخاصة بـ C++

الوراثة الخاصة بـ C++

تعليمات STL الخاصة بـ C++

C++ 参考手册

C++ map erase() 函数使用方法及示例

C++ STL map (المسح) الخاصة بـ C++

C ++ map delete()函数用于从map容器中删除与给定键值关联的单个元素或元素范围。因此,将通过删除元素的数量来减小尺寸。

语法

void erase (iterator position);                    	  // 在 C++ 11 之前
size_type erase (const key_type& k);    		  // 在 C++ 11 之前
void erase (iterator first, iterator last);  		  // 在 C++ 11 之前
iterator  erase (const_iterator position);		  //从 C++ 11 开始
size_type erase (const key_type& k);		  //从 C++ 11 开始	
iterator  erase (const_iterator first, const_iterator last); //从 C++ 11 开始

参数

position:指向要从map中删除的单个元素的迭代器。

k:要从map上移除的元素的键。

first:要擦除范围的开始。

last:要擦除范围的末尾。

返回值

它返回一个指向已删除元素的下一个元素的迭代器,或者返回已删除元素的数量。

实例1

让我们看一个简单的示例,通过迭代器擦除元素。

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main ()
{
  map<char,int> mymap;
  map<char,int>::iterator it;
  mymap['a']=10;
  mymap['b']=20;
  mymap['c']=30;
  mymap['d']=40;
  
  cout<<"قبل إزالة العناصر: \n";
   for (it=mymap.begin(); it!=mymap.end(); ++it)
  std::cout << it->first << " => " << it->second << '\n';
  it=mymap.find('b');
  mymap.erase (it);                // erasing by iterator
  cout<<"\nبعد إزالة العناصر: \n";
  for (it=mymap.begin(); it!=mymap.end(); ++it)
    std::cout << it->first << " => " << it->second << '\n';
  return 0;
}

الإخراج:

قبل إزالة العناصر: 
a => 10
b => 20
c => 30
d => 40
بعد إزالة العناصر: 
a => 10
c => 30
d => 40

في المثال السابق، يتم حذف العنصر بواسطة الم迭代ر.

المثال 2

لنرى مثالاً بسيطاً، إزالة العناصر باستخدام مفتاح معين من map.

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main ()
{
  map<char,int> mymap;
  map<char,int>::iterator it;
  mymap['a']=10;
  mymap['b']=20;
  mymap['c']=30;
  mymap['d']=40;
  
  cout<<"قبل إزالة العناصر: \n";
   for (it=mymap.begin(); it!=mymap.end(); ++it)
    std::cout << it->first << " => " << it->second << '\n';
 mymap.erase ('c');               // erasing by key
  cout<<"\nبعد إزالة العناصر: \n";
  for (it=mymap.begin(); it!=mymap.end(); ++it)
    std::cout << it->first << " => " << it->second << '\n';
  return 0;
}

الإخراج:

قبل إزالة العناصر: 
a => 10
b => 20
c => 30
d => 40
بعد إزالة العناصر: 
a => 10
b => 20
d => 40

في المثال السابق، تم استخدام دالة delete (key) باستخدام مفتاح 'c' و قيمته في الخريطة.

المثال 3

لنرى مثالاً بسيطاً، إزالة العناصر باستخدام نطاق معين.

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main ()
{
  map<char,int> mymap;
  map<char,int>::iterator it;
  mymap['a']=10;
  mymap['b']=20;
  mymap['c']=30;
  mymap['d']=40;
  
  cout<<"قبل إزالة العناصر: \n";
   cout<<"حجم: "<<mymap.size()<<'\n';
   for (it=mymap.begin(); it!=mymap.end(); ++it)
   cout << it->first << " => " << it->second << '\n';
   mymap.erase ( mymap.begin () ,  mymap.end () );   // erasing by range
  cout<<"\nبعد إزالة العناصر: \n";
  cout<<"حجم: "<<mymap.size();
  for (it=mymap.begin(); it!=mymap.end(); ++it)
  cout << it->first << " => " << it->second << '\n';
  return 0;
}

الإخراج:

قبل إزالة العناصر: 
حجم: 4
a => 10
b => 20
c => 30
d => 40
بعد إزالة العناصر: 
حجم: 0

في المثال السابق، تم استخدام دالة delete (first،last) لإزالة العناصر في نطاق معين (أي من البداية إلى النهاية).

المثال 4

لنرى مثالاً بسيطاً، إزالة جميع الأعداد الصحيحة من map.

#include <map>
#include <iostream>
using namespace std;
int main()
{
    map<int, string> m = {{1, "one"}, 
                       {2, "two"}, 
                       {3, "three"},
                       {4, "four"}, 
                       {5, "five"}, 
                       {6, "six"}};
                       
    // إزالة جميع الأرقام الظاهرة من m
    cout << "بعد إزالة الأرقام الظاهرة، العناصر هي:\n\t";
    for(auto it = m.begin(); it != m.end(); )
        if(it->first % 2 == 1)
            it = m.erase(it);
        else
            ++it;
    for(auto& p : m)
        cout << p.second << ", ";
}

الإخراج:

بعد إزالة الأرقام الظاهرة، العناصر هي:
اثنين، أربعة، ستة،

في المثال أعلاه، جميع الأرقام الظاهرة قد تم حذفها، وأظهرت الأرقام المزدوجة.

C++ STL map (المسح) الخاصة بـ C++