Ц++ Стд Свап

C Std Svap



„Замена је чин размене две или више ствари. Подаци између две варијабле у програмирању се могу пребацивати. Размена ствари између две особе је могућа у стварном животу. Вредности било која два објекта могу се заменити коришћењем стандардне библиотечке функције свап() у Ц++. Постављен је под заглавље „услужни програм“ у Ц11. Функција свап() у Ц++ има сложеност од Н за низове јер сваки елемент мора бити замењен појединачно, док је тежина функције за константе константна. Функција свап() шаље упозорење или грешку ако било који од променљивих елемената не успе. Погледајте потпис функције за стд::свап() испод:

Синтакса:

шаблон < разред Т > празнина свап ( Т & променљива_1 , Т & променљива_2 ) ;

И вредност прве променљиве и друге променљиве, обе чувају вредности, треба да се замене. Функција само мења вредности променљивих; нема излаз.”







Рад функције свап() у Ц++

Функција замена је имплементирана у Ц++ користећи следећа три реда.



Темплате празнина свап ( Т & и , Т & ј ) {
Т темп = стд :: потез ( и ) ;
и = стд :: потез ( ј ) ;
ј = стд :: потез ( темп ) ;
}

Изјава „Т темп = стд::мове(и)”; прави копију елемента 'и' и дуплира га. Овде, “и = стд::мове(ј)”; одбацује оригиналне ставке „и” и чува „и” копију „ј” уместо оригиналног „ј”. Формула “ј = стд:: мове(темп)”; сачувајте „и“ са клоном темп. и уклоните идентичан садржај темп. Такође, избришите темп променљиву након што је извршење функције свап() завршено.



Пример 1: Програм користећи стд::мове метод за замену

Као што је приказано у наставку, можемо заменити два објекта користећи Ц++11 функцију стд::мове.





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

#инцлуде <вектор>



шаблон
празнина свап ( Т & а , Т & б )
{
Т темп = стд :: потез ( а ) ;
а = стд :: потез ( б ) ;
б = стд :: потез ( темп ) ;
}
инт главни ( )
{
стд :: вектор листа = { 10 , 12 , 13 , петнаест , 16 , 17 } ;
инт и = 3 , ј = 5 ;
свап ( листа [ и ] , листа [ ј ] ) ;
за ( инт и : листа ) {
стд :: цоут << и << '' ;
}
повратак 0 ; }

Имамо декларацију шаблона која има објекат „Т“. Након тога, успоставили смо функцију као „свап“. Функција узима два параметра &а и &б, типа 'Т'. Као резултат аргумената Т& а, Т& б који упућују или чувају адресу прослеђене променљиве и примењују се директно на њих без враћања, функција свап(Т& а, Т& б) назива се позив по референци.



Унутар воид свап-а применили смо алгоритам замене коришћењем методе стд::мове. Затим смо конструисали главни програм. Овде смо декларисали променљиву „лист“ и иницијализовали је листом нумеричких вредности. Поставили смо вредности за „и“ и „ј“ за замену. Нумеричка вредност која се налази на другом индексу замењена је нумеричком вредношћу на петом индексу. Затим смо позвали функцију размене и проследили јој индексе „и“ и „ј“ за замену. Петља фор се користи за штампање замењене листе.

Излаз је приказао измењену листу. Можете посматрати како је нова генерисана листа заменила вредност према наведеним индексима.

Пример 2: Програм користећи стд::свап метод за замену

Коришћење механизма стд::свап који се налази у заглављу услужног програма (у Ц++11) је уобичајено решење. Вредности два објекта се мењају да би функционисао.

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

#инцлуде <вектор>

#инцлуде <утилити>



инт главни ( )
{
стд :: вецторарр = { 3 , 6 , 9 , петнаест , 13 } ;
инт и = 3 , ј = 4 ;

стд :: свап ( арр [ и ] , арр [ ј ] ) ;

за ( инт и : арр ) {
стд :: цоут << и << '' ;
}

повратак 0 ;
}

Увозом датотеке заглавља <утилити>, можемо приступити функцији свап у нашем програму. Овде смо укључили датотеку заглавља <утилити> са још две важне библиотеке. Затим смо успоставили инт маин метод. Унутар главног програма, ми смо декларисали вектор креирањем променљиве „арр“. Променљива „арр“ се иницијализује са пет елемената целог броја. Позиције индекса се додељују „и” и „ј” за замену. Променљиве “и” и “ј” се затим прослеђују методи стд::свап за замену вредности наведеног индекса. Уз петљу фор, одштампали смо замењене низове.

Листа добијена након операције замене коришћењем методе стд::свап је приказана на следећи начин:

Пример 3: Програм користећи стд::итер_свап метод за замену

Употреба алгоритма стд::итер_свап, који је наведен у заглављу за алгоритам, је додатна опција. Начин на који функционише је пребацивање вредности објеката на које указују дати итератори.

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

#инцлуде <вектор>

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

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



инт главни ( )
{
стд :: вецторвец = { 64 , 61 , 62 , 63 , 60 } ;
инт и = 0 , ј = 4 ;
ауто итр1 = стд :: следећи ( ствар. почети ( ) , и ) ;
ауто итр2 = стд :: следећи ( ствар. почети ( ) , ј ) ;

стд :: итер_свап ( итр1 , итр2 ) ;
за ( инт и : ствар ) {
стд :: цоут << и << '' ;
}
повратак 0 ;
}

Главном методу програма смо декларисали векторску променљиву „вец“ и доделили јој векторску листу бројева. Затим смо одредили позицију индекса променљивим “и” и “ј”. Позива се метод стд::итер_свап који узима итер1 и итер2 као аргумент. Итер1 и итер2 су декларисани са кључном речи ауто и имају операцију итерације. Метода фор петље штампа замењене вредности векторског низа након извршења.

Метода стд::итер_свап је успешно заменила вредности наведених вектора.

Пример 4: Програм коришћења без привремених променљивих за замену

Овај пример показује нови начин замене бројева у Ц++ коду без употребе привремених променљивих.

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

користећи простор имена стд ;

инт главни ( )
{
инт к1 = два , к2 = 12 ;
цоут << „Пре замене“. << ендл ;
цоут << 'к1 = ' << к1 << ', к2 = ' << к2 << ендл ;

к1 = к1 + к2 ;
к2 = к1 - к2 ;
к1 = к1 * к2 ;

цоут << ' Након замене.' << ендл ;
цоут << 'к1 = ' << к1 << ', к2 = ' << к2 << ендл ;

повратак 0 ; }

Хајде да испитамо рад овог програма. Овде смо декларисали к1 и к2, који су иницијално постављени бројем, респективно. Затим, користећи формулу к1 = к1+ к2, саберемо к1 и к2 и резултат ставимо у к1. Ово указује да је к1 једнако 2 плус 12. Дакле, сада је једнако 14. Затим примењујемо формулу к2 = к1 – к2. Ово указује да је к2 = 14 – 12. Дакле, к2 је сада једнако 2. Још једном примењујемо формулу к1 = к1 – к2. Ово указује да је к1 = 14 – 2. Дакле, к1 = 12 на крају. Као резултат тога, бројеви су замењени.

Број замењен пре и после се приказује на следећем екрану са упитом.

Закључак

Овде ћемо прећи потпуни опис свап() у Ц++, његову употребу и неке примере који показују како функционише. Коришћењем функције стд::свап(), вредности две променљиве се могу мењати. Ц++ СТЛ укључује уграђену функцију која се зове стд::свап(). Функција свап(Т& променљива 1, Т& променљива 2) позива референцом, а Ц++ преоптерећује свап() у зависности од типа варијабли података су такође објашњени у овом водичу.