Како се користи Ц ++ ред

How Use C Queue



Увод

Ред је збирка ставки, при чему прва ставка додата на листу мора бити прва ставка која се затим уклања. Дакле, како се предмети додају у колекцију, она расте у величини, односно расте у дужину. Кад год желите уклонити било коју ставку, она мора бити прва додата. Ако се ставке непрестано уклањају, онда је следећа друга ставка; трећи се накнадно уклања итд.

Након што је прва ставка оригиналне листе уклоњена, друга постаје прва ставка. Након што је друга ставка уклоњена, трећа постаје прва ставка итд.







Добар пример чекања у стварном животу је када људи стану у ред да чекају услугу или добро. Прва особа се послужује прва пре последње. Међутим, ред о којем се говори у овом водичу је ред софтвера, како је дизајниран у Ц ++.



ФИФО

ФИФО значи Фирст-Ин, Фирст-Оут. То је још један начин да цените ред. То значи да је прва ставка која уђе на листу прва ставка која се уклања, кад год треба да се изврши уклањање. Почетак листе назива се глава или предња страна; крај листе се назива леђима или репом.



Основне операције

Ред софтвера мора имати најмање следеће операције:





гурати

Ова операција додаје нови елемент на задњој страни реда. Ова операција се званично назива енкуеуе.



смена

Ова операција уклања први елемент реда, а други елемент постаје нови први елемент. Ова операција се званично назива декуеуе. То се зове поп у Ц ++.

У овом чланку је објашњено како се користи структура података о реду редова Ц ++. Требали бисте знати Ц ++ показиваче и референце да бисте разумели остатак овог чланка.

Класа и објекти

Класа је скуп променљивих и функција које раде заједно, при чему променљиве немају додељене вредности. Када су вредности додељене променљивим, класа постаје објекат. Различите вредности дате истој класи резултирају различитим објектима; односно различити објекти су исте класе са различитим вредностима. За стварање објекта из класе се каже да представља инстанцирање објекта.

Име, ред, је класа. Објекат креиран из класе реда има име које је програмер изабрао.

Функција која припада класи је потребна за инстанцирање објекта из класе. У Ц ++ та функција има исто име као и име класе. Објекти направљени (настали) од класе имају различита имена која им је дао програмер.

Креирање објекта из класе значи конструисање објекта; то такође значи инстанцирање.

Ц ++ програм који користи класу реда, почиње следећим редовима на врху датотеке:

#инцлуде
#инцлуде
користећи именски простор стд;

Први ред је за улаз/излаз. Друга линија је да дозволи програму да користи све функције класе реда. Трећи ред омогућава програму да користи имена у стандардном простору имена.

Преоптерећење функције

Када два или више потписа различитих функција имају исто име, каже се да је то име преоптерећено. Када се позове једна функција, број и врста аргумената, одређују која се функција заправо извршава.

Конструкција

ред<тип>име()

Следећа декларација инстанцира ред са именом, куе типа инт.

ред<инт>то;

Ред је празан. Декларација почиње резервисаном речју, редом иза кога иду углате заграде са типом података. Тада имате програмер дајте име за ред.

Конструисање са листом иницијализатора

Следећа дефиниција показује како да креирате ред са лисом иницијализатора:

ред<пловак>то({1.1, 2.2, 3.3, 4.4});

Уништавање реда

Да бисте уништили ред, пустите га да изађе из опсега.

Приступ елементима реда

пусх (вредност)

Ред је листа Фирст-Ин-Фирст-Оут листа. Дакле, свака вредност се додаје са задње стране. Следећи сегмент кода ствара празан ред, након чега се са задње стране додаје пет плутајућих вредности:

ред<пловак>то;

то.гурати(1.1);
то.гурати(2.2);
то.гурати(3.3);
то.гурати(4.4);
то.гурати(5.5);

величина () конст

Ово враћа број елемената у реду. Следећи код илуструје:

ред<пловак>то;
то.гурати(1.1);то.гурати(2.2);то.гурати(3.3);то.гурати(4.4);то.гурати(5.5);
цена<<то.величина() << ' н';

Излаз је 5.

фронт ()

Ово враћа референцу на први елемент реда, без уклањања елемента. Излаз следећег кода је 1.1.

ред<пловак>то;
то.гурати(1.1);то.гурати(2.2);то.гурати(3.3);то.гурати(4.4);то.гурати(5.5);
цена<<то.фронт() << ' н';

Елемент није уклоњен из реда.

фронт () цонст

Када конструкцији реда претходи цонст, уместо фронт () се изводи израз фронт () цонст. Користи се у следећем коду, на пример.

цонстред<пловак>то({1.1, 2.2, 3.3, 4.4, 5.5});
цена<<то.фронт() << ' н';

Враћа се константна референца. Елемент није уклоњен из вектора. Елементи реда се не могу мењати.

назад()

Ово враћа референцу на последњи елемент реда, без уклањања елемента. Излаз следећег кода је 5.5.

ред<пловак>то;
то.гурати(1.1);то.гурати(2.2);то.гурати(3.3);то.гурати(4.4);то.гурати(5.5);
цена<<то.назад() << ' н';

бацк () цонст

Када конструкцији реда претходи цонст, уместо бацк () се извршава израз бацк () цонст. Користи се у следећем коду, на пример.

цонстред<пловак>то({1.1, 2.2, 3.3, 4.4, 5.5});
цена<<то.назад() << ' н';

Враћа се константна референца. Елемент није уклоњен из реда. Уз претходни цонст за конструкцију реда, елементи у реду се не могу мењати.

Капацитет реда

величина () конст

- види горе

емпти () цонст

Ово враћа 1 за труе ако нема елемената у реду, или 0 за фалсе ако је ред празан. Следећи код то илуструје:

ред<пловак>то1({1.1, 2.2, 3.3, 4.4, 5.5});
цена<<то1.празна() << ' н';
ред<пловак>тхат2;
цена<<тхат2.празна() << ' н';

Излаз је:

0
1

Модификатори редова

поп ()

Ред је ФИФО, па сваки елемент који се мора уклонити мора бити уклоњен са врха (главе) реда. Ова функција -члан уклања први елемент без враћања. Следећи код то илуструје:

ред<пловак>то({1.1, 2.2, 3.3, 4.4, 5.5});
цена<<то.фронт() << ' н';
то.поп();
цена<<то.величина() << ' н';

Излаз је:

1.1
4

а.свап (б)

Два реда се могу заменити, као што је илустровано у овом сегменту кода:

ред<пловак>то1({1.1, 2.2, 3.3, 4.4, 5.5});
ред<пловак>тхат2({10, двадесет});
то1.свап(тхат2);
цена<< 'Први елемент и величина куе1:
'
<<то1.фронт() <<','<<то1.величина() << ' н';
цена<< 'Први елемент и величина куе2'<<
тхат2.фронт() <<','<<тхат2.величина() << ' н';

Излаз је:

Први елемент и величина куе1: 10, 2

Први елемент и величина куе2: 1.1, 5

Имајте на уму да се дужина реда по потреби повећава. Такође, вредности које нису имале замене, замењују се неком подразумеваном вредношћу. Типови података морају бити истог типа.

Оператори једнакости и релација за редове

За обичне знакове у Ц ++, у растућем редоследу, бројеви долазе испред великих слова, који долазе испред малих слова. Размак долази испред нуле и сви они.

Оператори једнакости

Враћа 1 за труе и 0 за фалсе.

Оператер ==

Враћа 1 ако два реда имају исту величину и одговарајући елементи су једнаки; у супротном враћа 0. Пример:

ред<цонст цхар*>то1({'врста', 'нешто друго'});
ред<цонст цхар*>тхат2({'зао'});
интна једном=то1==тхат2;
цена<<на једном<< ' н';

Излаз је: 0.

! = Оператор

- супротно од наведеног. Пример:

ред<цонст цхар*>то1({'врста', 'нешто друго'});
ред<цонст цхар*>тхат2({'зао'});
интна једном=то1! =тхат2;
цена<<на једном<< ' н';

Излаз је: 1.

Релацијски оператори

Враћа 1 за труе и 0 за фалсе.

Тхе

Враћа 1 ако је први ред почетни подскуп другог реда, при чему су елементи два једнака дела исти и истим редоследом. Ако су оба реда исте величине или различитих величина и крећу се слијева надесно, у првом реду наилази на елемент који је мањи од одговарајућег елемента у другом реду, тада ће 1 ипак бити враћен. У супротном се враћа 0. Пример:

ред<цонст цхар*>то1({'врста', 'нешто друго'});
ред<цонст цхар*>тхат2({'зао'});
интна једном=то1<тхат2;
цена<<на једном<< ' н';

Излаз је 1.

> Оператор

- супротно од наведеног. Пример:

ред<цонст цхар*>то1({'врста', 'нешто друго'});
ред<цонст цхар*>тхат2({'зао'});
интна једном=то1>тхат2;
цена<<на једном<< ' н';

Излаз: 0

Тхе<= Operator

- исто као ред<цонст цхар*>то1({'врста', 'нешто друго'});
ред<цонст цхар*>тхат2({'зао'});
интна једном=то1<=тхат2;
цена<<на једном<< ' н';

Излаз: 1

Оператор> =

- супротно од наведеног. Пример:

ред<цонст цхар*>то1({'врста', 'нешто друго'});
ред<цонст цхар*>тхат2({'зао'});
интна једном=то1> =тхат2;
цена<<на једном<< ' н';

Излаз: 0

Класа и њени неодређени објекти

Вредност је за тип података, као што је инстанцирани објекат за класу. Конструкција реда може такође прихватити класу као тип података. Следећи програм то илуструје:

#инцлуде
#инцлуде
користећи именски простор стд;
класа ТхеЦла
{
јавности:
интна једном;
статичан цхарцх;
празнинафункција(цхарне, цонст цхар *п)
{
цена<< 'Постоје ' <<на једном<< 'књиге вредне' <<не<<п<< ' у продавници.' << ' н';
}
статичан празниназабавно(цхарцх)
{
ако (цх== 'до')
цена<< „Званична статичка функција члана“ << ' н';
}
};
интглавни()
{
ТхеЦла обј1;ТхеЦла обј2;ТхеЦла обј3;ТхеЦла обј4;ТхеЦла обј5;
ред<ТхеЦла>то;
то.гурати(обј1);то.гурати(обј2);то.гурати(обј3);то.гурати(обј4);то.гурати(обј5);
цена<<то.величина() << ' н';
повратак 0;
}

Излаз је 5.

Повезана листа

Листа редова се технички назива повезана листа. Постоје два типа повезаних листа за ред: појединачно повезана листа и двоструко повезана листа.

Појединачно повезан елемент листе може се имплементирати помоћу структуре од два члана. Један члан држи показивач на следећи елемент, а други члан држи датум (јединствено за податке).

Двоструко повезани елемент листе може се имплементирати структуром од три члана. Средњи члан држи датум, док први и трећи члан држе показиваче на сусједне елементе.

Пријаве у реду

Ред је структура података први у први излази. У рачунарству постоје ситуације када подаци стижу у облику реда, што захтева понашање „први у први излази“.

Дељење рачунарских ресурса

Ресурс у рачунару је свака физичка или виртуелна компонента ограничене доступности. Они укључују ЦПУ, видео картицу, чврсти диск и меморију. За дељење таквог ресурса потребан је ред.

Руковање прекидима

Компјутерска периферија мора повремено прекидати рад рачунара. Прекиди се морају третирати на исти начин на који су стигли. Ово захтева ред.

Управљајте информацијама.

Ред се може користити, на пример, за управљање датотекама апликација за посао, ако су датотеке ускладиштене на рачунару.

Закључак

Ред је структура података листе, која је или појединачно повезана листа или двоструко повезана листа. По правилу, први елемент који уђе на листу је први елемент који излази. Ц ++ пружа структуру података о реду чекања у својој стандардној библиотеци. Категорије функција чланова и оператори доступни за ову структуру су конструкција редова, приступ елементима реда, капацитет реда, модификатори реда и оператори преоптерећени редом.

Било која структура података о реду чекања мора имати најмање функције члана пусх () и поп (). пусх () значи слање новог елемента на задњој страни реда; и поп () значи уклањање елемента који се налази на челу реда. Нажалост, у Ц ++, ове функције не враћају вредност која је притиснута или искочена. Дакле, да бисте знали последњи елемент пре него што притиснете, мора се користити функција ектра бацк (); а да би се знао први елемент пре искакања, мора се користити функција ектра фронт ().

Вредност је за тип података, као што је инстанцирани објекат за класу. Дакле, одређена класа се може користити као тип података за инсталацију шаблона реда. Различити објекти за класу постају као различите вредности за класу.

Ред чекања има апликације на рачунару. Може се користити, на пример, за управљање датотекама апликација за посао, ако су датотеке ускладиштене у рачунару.

Цхрис