Примери Ц++ Стд::Мап::Ерасе

Primeri C Std Map Erase



Међу многим операцијама доступним за „стд::мап“, функција „брисање“ се истиче као кључна алатка за уклањање елемената на основу њихових кључева. „стд::мап“ је организовани асоцијативни контејнер који се састоји од парова кључ/вредност. Распоред елемената унутар „стд::мап” је доследно сортиран према њиховим кључевима, олакшавајући ефикасне операције као што су претрага, уметање и брисање на основу вредности кључа.

У оквиру Ц++-а, функција „стд::мап::ерасе“ служи као функција члана класе „стд::мап“, омогућавајући елиминацију одређених елемената са мапе. Долази у различитим облицима, пружајући флексибилност у одређивању које елементе треба избрисати. У овом чланку ћемо се позабавити детаљима „стд::мап::ерасе“, пружајући више примера који илуструју његову свестраност.







Пример 1: Брисање помоћу кључа

Могућност брисања елемената помоћу кључа у „стд::мап“ је основна карактеристика коју обезбеђује библиотека стандардних шаблона Ц++. Ова операција се обично користи када треба да управљате и манипулишете паровима кључ/вредност у програму и пружа згодан начин за уклањање специфичних елемената на основу њихових кључева. Направићемо пример да покажемо како се користи „стд::мап“ за креирање мапе, брисање елемента по кључу, а затим приказ измењене мапе.



#инцлуде <иостреам>
#инцлуде <мап>

инт маин ( ) {
стд::мап < инт, стд::стринг > миМап;
миМап [ 1 ] = 'црвено' ;
миМап [ 2 ] = 'Плави' ;
миМап [ 3 ] = 'Зелен' ;

миМап.ерасе ( 2 ) ;

за ( цонст ауто & пар : миМап ) {
стд::цоут << пар.први << ': ' << пар.други << стд::ендл;
}

повратак 0 ;
}


У овом примеру почињемо тако што ћемо укључити неопходне Ц++ стандардне библиотеке као што су <иостреам> и <мап> да бисмо омогућили употребу улазно/излазних операција и контејнера „стд::мап”. У оквиру функције „маин“, ми иницијализујемо „стд::мап“ под називом „миМап“ где су целобројни кључеви повезани са одговарајућим вредностима низа. Три пара кључ/вредност се додају на мапу који представљају боје: „црвена“ за кључ 1, „плава“ за кључ 2 и „зелена“ за кључ 3. Затим користимо функцију члана „бриши“ за „ стд::мап” да бисте уклонили елемент повезан са кључем 2 са наше мапе. Сходно томе, „Плава“ боја више није део мапе након ове операције.



Да бисмо приказали резултујуће стање мапе, користимо петљу „фор“ која се понавља кроз сваки пар кључ-вредност унутар „миМап“. Користимо објекат „стд::цоут“ унутар петље за штампање сваког пара кључ-вредност на конзоли. Коначно, наредба „ретурн 0“ закључује „главну“ функцију која сигнализира успешно извршење нашег програма.





Излаз приказује преостале парове кључ-вредност у „стд::мап” након што се елемент са кључем 2 („Плаво”) избрише што резултира „1: Црвени” и „3: Зелени” излаз.



Пример 2: Брисање итератором

У Ц++, итератори су објекти који олакшавају навигацију елемената унутар контејнера, нудећи средства за приступ, модификовање или уклањање елемената. Функција „стд::мап::ерасе“ се такође може користити са итераторима за уклањање елемената.

Ево примера:

#инцлуде <иостреам>
#инцлуде <мап>

инт маин ( ) {
стд::мап < инт, стд::стринг > фруитФолдер;
фруитФолдер [ 1 ] = 'манго' ;
фруитФолдер [ 2 ] = 'наранџаста' ;
фруитФолдер [ 3 ] = 'ананас' ;
фруитФолдер [ 4 ] = 'Грожђе' ;

ауто ит = фруитМап.финд ( 2 ) ;

ако ( то ! = фруитМап.енд ( ) ) {
фруитМап.ерасе ( то ) ;
}

за ( цонст ауто & пар : фруитМап ) {
стд::цоут << пар.први << ': ' << пар.други << стд::ендл;
}

повратак 0 ;
}


Обезбеђени Ц++ код почиње тако што се декларише „стд::мап“ под називом „фруитМап“ за чување парова кључ/вредност, повезујући целе бројеве са одговарајућим именима воћа. Мапу попуњавамо уносима за четири различита воћа: „Манго”, „Наранџа”, „Анас” и „Грожђе”. Након тога, користимо функцију „пронађи“ да бисмо добили итератор (ит) који указује на елемент са кључном вредношћу 2 унутар „фруитМап“. Затим проверавамо да ли итератор није једнак „енд()“ да бисмо били сигурни да елемент са наведеним кључем постоји на мапи.

У условном блоку, бришемо елемент на који указује итератор „ит“ користећи функцију „ерасе“. Коначно, понављамо кроз преостале елементе у модификованој „фруитМап“ користећи „фор“ петљу.

Коначни излаз приказује модификовани садржај „фруитМап“ након брисања.

Пример 3: Брисање опсега

Контејнер „стд::мап“ у Ц++ пружа згодан метод за брисање елемената унутар одређеног опсега. Функција „брисање“ вам омогућава да уклоните елементе са мапе на основу итератора који представљају почетак и крај опсега који треба да се избрише.

Сада, хајде да истражимо концепт брисања опсега користећи „стд::мап“ са примером:

#инцлуде <иостреам>
#инцлуде <мап>

инт маин ( ) {
стд::мап < инт, стд::стринг > невМап;
невМап [ 1 ] = 'коњ' ;
невМап [ 2 ] = 'лав' ;
невМап [ 3 ] = 'Тигар' ;
невМап [ 4 ] = 'мачка' ;

невМап.ерасе ( невМап.ловер_боунд ( 2 ) , невМап.уппер_боунд ( 3 ) ) ;

за ( цонст ауто & пар : новаМапа ) {
стд::цоут << пар.први << ': ' << пар.други << стд::ендл;
}

повратак 0 ;
}


Програм почиње тако што декларише „стд::мап“ под називом „невМап“ који повезује целобројне кључеве са одговарајућим вредностима низа. Након тога, попуњавамо мапу паровима кључ/вредност користећи оператор угластих заграда. На пример, парове кључ-вредност од (1, „Кон“), (2, „Лав“), (3, „Тигар“) и (4, „Мачка“) додељујемо „невМап“.

Следећа значајна операција укључује коришћење итератора за брисање елемената са мапе. Функција брисања се користи са аргументима „невМап.ловер_боунд(2)“ и „невМап.уппер_боунд(3)“. Ово брише елементе са тастерима који падају у опсег (2, 3). Другим речима, уклања уносе „Лав“ и „Тигар“ са мапе. Након ове операције, мапа садржи само елементе са кључевима 1 и 4, који одговарају „Коњу“ и „Мачки“.

Коначно, користимо петљу „фор“ засновану на опсегу за понављање кроз преостале елементе на мапи и штампање њихових парова кључ-вредност на конзоли.

Као резултат, излаз приказује следеће:

Пример 4: Брисање на основу предиката

Брисање на основу предиката се односи на уклањање елемената из структуре података, као што је контејнер, на основу одређеног услова или критеријума. „стд::мап::ерасе“ се такође може користити са предикатском функцијом за условно уклањање елемената. Хајде да размотримо следећи пример:

#инцлуде <иостреам>
#инцлуде <мап>
#инцлуде <алгоритам>

инт маин ( ) {

стд::мап < инт, стд::стринг > миМап = {
{ 1 , 'јануар' } ,
{ 2 , 'фебруар' } ,
{ 3 , 'март' } ,
{ 4 , 'Април' } ,
{ 5 , 'Може' }
} ;

ауто предикат = [ ] ( цонст стд::паир < инт, стд::стринг >& елемент ) {
повратак елемент.сецонд.ленгтх ( ) < 5 ;
} ;

миМап.ерасе ( стд::ремове_иф ( миМап.бегин ( ) , миМап.енд ( ) , предикат ) , миМап.енд ( ) ) ;

стд::цоут << ' Мапа након брисања елемената на основу предиката:' << стд::ендл;
за ( цонст ауто & пар : миМап ) {
стд::цоут << пар.први << ': ' << пар.други << стд::ендл;
}

повратак 0 ;
}


Програм почиње укључивањем потребних датотека заглавља. „стд::мап“ под називом „миМап“ је декларисан и иницијализован у „маин“ функцији. Садржи парове кључ/вредност који представљају називе месеци и њихове одговарајуће нумеричке вредности. Затим се дефинише „ламбда“ функција (предикат). Ова „ламбда“ функција служи као предикат за алгоритам „стд::ремове_иф“. Он проверава да ли је дужина вредности стринга која је повезана са елементом мапе мања од пет знакова.

Алгоритам „стд::ремове_иф“ се тада користи заједно са функцијом „ерасе“ у „стд::мапу“. Ова комбинација уклања елементе са мапе на основу ваљаности предиката.

Након покретања програма, елементи са кључевима мањим од пет се уклањају са оригиналне мапе, демонстрирајући брисање засновано на предикату користећи „стд::мап“.

Закључак

У закључку, функција „стд::мап::ерасе“ је свестран алат у Ц++ за уклањање елемената из „стд::мап“. Било да се брише по кључу, итератору, опсегу или на основу предиката, функција „стд::мап::ерасе“ пружа флексибилност и лакоћу коришћења. Савладавањем ове функције, Ц++ програмери могу ефикасно да управљају и манипулишу подацима унутар „стд::мап” контејнера, чинећи њихов код јачим и лакшим за одржавање.