unordered_multimap стирание в C ++ STL

Опубликовано: 30 Декабря, 2021

unordered_multimap :: erase () - это встроенная функция в C ++ STL, которая удаляет элемент из заданного диапазона по позиции и по ключу. В C ++ STL существует три варианта этой функции.
В C ++ для unordered_multimap есть следующие типы функций erase ().

  1. По позиции : он удаляет элемент из unordered_multimap по заданной позиции и возвращает итератор, указывающий на позицию, следующую сразу за последним из стертых элементов.
  2. По ключу: удаляет элементы по ключу. Возвращает количество стертых элементов.
  3. По диапазону: он принимает итератор первым и последним и удаляет все элементы между ними, включая первый, но исключая последний. Он возвращает итератор, указывающий на позицию, следующую сразу за последним из стертых элементов.

Синтаксис:

  1. iterator erase ( iterator position )
  2. size erase ( key_type& k )
  3. iterator erase ( iterator first, iterator last );

Ниже программы объясняют вышеупомянутые функции.
Пример 1

// C++ program to illustrate the
// unordered_multimap::erase() function
#include <bits/stdc++.h>
using namespace std;
int main()
{
// declaration of unordered_multimap
unordered_multimap< char , int > sample;
// inserts element
sample.insert({ 'a' , 2 });
sample.insert({ 'b' , 4 });
sample.insert({ 'c' , 8 });
sample.insert({ 'd' , 10 });
sample.insert({ 'c' , 4 });
sample.insert({ 'e' , 4 });
sample.insert({ 'f' , 4 });
cout << " Elements of multimap are : " ;
for ( auto & x : sample)
cout << x.first << " : " << x.second << endl;
// delete element by position
sample.erase(sample.begin());
// print after delete by position
cout << " Elements of multimap after deleting by position are : " ;
for ( auto & x : sample)
cout << x.first << " : " << x.second << endl;
// erase by Element
sample.erase( 'c' );
// print after delete by element
cout << " Elements of multimap after deleting by element name : " ;
for ( auto & x : sample)
cout << x.first << " : " << x.second << endl;
// erase by range
sample.erase(sample.find( 'e' ), sample.end());
// print after delete by range
cout << " Elements of multimap after deleting by range are : " ;
for ( auto & x : sample)
cout << x.first << " : " << x.second << endl;
return 0;
}
Выход:
Элементами multimap являются: 
ж: 4
а: 4
а: 2
с: 4
с: 8
г: 10
e: 4
 Элементами multimap после удаления по позиции являются: 
а: 4
а: 2
с: 4
с: 8
г: 10
e: 4
 Элементы multimap после удаления по имени элемента: 
а: 4
а: 2
г: 10
e: 4
 Элементами multimap после удаления по диапазону являются: 
а: 4
а: 2
г: 10

Пример 2

// C++ program to illustrate the
// unordered_multimap::erase() function
#include <bits/stdc++.h>
using namespace std;
int main()
{
// declaration of unordered_multimap
unordered_multimap< int , int > sample;
// inserts element
sample.insert({ 1, 2 });
sample.insert({ 2, 4 });
sample.insert({ 3, 8 });
sample.insert({ 4, 10 });
sample.insert({ 3, 4 });
sample.insert({ 5, 4 });
sample.insert({ 6, 4 });
cout << " Elements of multimap are : " ;
for ( auto & x : sample)
cout << x.first << " : " << x.second << endl;
// delete element by position
sample.erase(sample.begin());
// print after delete by position
cout << " Elements of multimap after deleting by position are : " ;
for ( auto & x : sample)
cout << x.first << " : " << x.second << endl;
// erase by Element
sample.erase(3);
// print after delete by element
cout << " Elements of multimap after deleting by element name : " ;
for ( auto & x : sample)
cout << x.first << " : " << x.second << endl;
// erase by range
sample.erase(sample.find(5), sample.end());
// print after delete by range
cout << " Elements of multimap after deleting by range are : " ;
for ( auto & x : sample)
cout << x.first << " : " << x.second << endl;
return 0;
}
Выход:
Элементами multimap являются: 
6: 4
2: 4
1: 2
3: 4
3: 8
4: 10
5: 4
 Элементами multimap после удаления по позиции являются: 
2: 4
1: 2
3: 4
3: 8
4: 10
5: 4
 Элементы multimap после удаления по имени элемента: 
2: 4
1: 2
4: 10
5: 4
 Элементами multimap после удаления по диапазону являются: 
2: 4
1: 2
4: 10
Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .