English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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:要擦除范围的末尾。
它返回一个指向已删除元素的下一个元素的迭代器,或者返回已删除元素的数量。
让我们看一个简单的示例,通过迭代器擦除元素。
#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
في المثال السابق، يتم حذف العنصر بواسطة الم迭代ر.
لنرى مثالاً بسيطاً، إزالة العناصر باستخدام مفتاح معين من 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' و قيمته في الخريطة.
لنرى مثالاً بسيطاً، إزالة العناصر باستخدام نطاق معين.
#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) لإزالة العناصر في نطاق معين (أي من البداية إلى النهاية).
لنرى مثالاً بسيطاً، إزالة جميع الأعداد الصحيحة من 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 << ", "; }
الإخراج:
بعد إزالة الأرقام الظاهرة، العناصر هي: اثنين، أربعة، ستة،
في المثال أعلاه، جميع الأرقام الظاهرة قد تم حذفها، وأظهرت الأرقام المزدوجة.