C++ за 21 день седьмое издание



Download 1,38 Mb.
bet382/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   378   379   380   381   382   383   384   385   ...   437
Bog'liq
word1

qlntegers.push (10);




pop

Извлекает элемент из начала очереди, т.е. из ее первой позиции

front

qlntegers.pop ();




Возвращ ает ссылку на элемент в начале очереди

back

cout «

"Element at front: " «

qlntegers.front ();

Возвращ ает ссылку на элемент в конце очереди, т.е. на последний вставлен­




ный элемент







cout «

"Element at back: " «

qlntegers.back ();

empty

Проверяет, не пуста ли очередь; возвращ ает значение типа bool




if (qlntegers.empty ())




size

cout « "The queue is empty!";

Возвращ ает количество элементов в очереди

size_t nNumElements = qlntegers.size ();

Класс q u eu e библиотеки STL не предоставляет такие функции, как b e g in () и en d (), хотя они доступны в большинстве контейнеров библиотеки STL, включая базовые классы d eq u e, v e c t o r и l i s t , лежащие в основе класса очереди. Это сделано намеренно, чтобы единственными допустимыми операциями очереди были те, которые согласуются с ее по­ веденческими характеристиками.


Вставка в конец и извлечение из начала очереди с использованием методов push () и pop ()

Для вставки элементов в очередь используется метод p u sh ():




qlntegers.push (5); // элемент вставляется в конец

Извлечение, напротив, осуществляется с начала при помощи метода pop ():




qlntegers.pop (); // извлечь элемент из начала



  1. отличие от стека, у очереди элементы доступны для просмотра с обоих концов кон­ тейнера при помощи методов f r o n t () и b a c k ():



cout « "Element at front: " « qlntegers.front() « endl;


cout « "Element at back: " « qlntegers.back() « endl;

Вставка, извлечение и просмотр представлены в листинге 24.4.



Использование класса queue библиотеки STL

553

ЛИСТИНГ 24.4. Вставка, извлечение и просмотр элементов очереди целых чисел





  1. #include




  1. #include



2 :

  1. int main ()




  1. {




  1. using namespace std;




  1. queue qlntegers;







8: cout « "Inserting {10, 5, -1, 20} into queue" « endl;



  1. qlntegers.push (10);




  1. qlntegers.push (5); // элемент вставляется в конец




  1. qlntegers.push (-1);




  1. qlntegers.push (20);



13:


14: cout « "Queue contains " << qlntegers.size () « " elements"



  1. endl;

    15:'

    cout «

    "Element at

    front:

    " «

    qlntegers.front ()

    « endl;

    16:

    cout «

    "Element at

    back:

    " «

    qlntegers.back() «

    endl;

    17:



















  2. while (qlntegers.size () != 0)




  1. {




  1. cout « "Deleting element: " « qlntegers.front () « endl;




  1. qlntegers.pop (); // извлечь элемент из начала

22: }


23:



  1. if (qlntegers.empty ()) // true, поскольку все элементы




    1. были извлечены




  1. cout « "The queue is now empty!" « endl;



26:



  1. return 0;




  1. }



Результат


Inserting {10, 5, -1, 20} into queue


Queue contains 4 elements


Element at front: 10


Element at back: 20


Deleting element: 10


Deleting element: 5


Deleting element: -1


Deleting element: 20


Анализ

В строках 9-12 элементы были добавлены в конец очереди q l n t e g e r s с использовани­ ем метода p u sh (). Методы f r o n t () и b a c k () используются для обращения к элементам в начальной и конечной позициях очереди, как показано в строках 15 и 16. Цикл w h ile в строках 18-22 отображает элементы из начала очереди, прежде чем извлечь их с использо­ ванием метода pop () в строке 21. Это продолжается до тех пор, пока очередь не опустеет. Вывод демонстрирует, что элементы были извлечены из очереди в том же порядке, в каком они были вставлены, поскольку вставляются они в конец очереди, а извлекаются с начала.


554 ЗАНЯТИЕ 24. Адаптивные контейнеры: стек и очередь




Использование класса priority_queue библиотеки STL

Для применения шаблон класса p r io r i ty _ q u e u e библиотеки STL требуется включить его заголовок . Приоритетная очередь (priority queue) отличается от очереди тем, что элемент с наивысшим значением (или значением, считающимся наивысшим согласно бинарному предикату) доступен в начале очереди, а работа с очередями ограничивается их началом.


Создание экземпляра приоритетной очереди

Ш аблон класса s t d : : p r i o r i t y _ q u e u e определен так:




template <


class типЭлемента,


class Контейнер = vector<Тип>,


class Сравнение = lessctypename Контейнер::value_type> > class priority_queue

Параметр типЭлемента задает тип объектов, которые будут храниться в приоритетной очереди. Второй параметр шаблона, Контейнер, — это класс контейнера, используемо­ го классом s t d : : p r io r i t y _ q u e u e для хранения данных, тогда как третий параметр по­ зволяет программисту определить бинарный предикат для выявления располагающегося вверху элемента. Если бинарный предикат не определен, класс p r i o r i t y _ q u e u e исполь­ зует заданный по умолчанию предикат s t d : :le s s < > , который сравнивает объекты, ис­ пользуя оператор o p e r a t o r s


Самый простой экземпляр приоритетной очереди целых чисел создается следующим образом:




std::priority_queue pqlntegers;

Если необходимо создать приоритетную очередь, содержащую элементы типа d o u b le в контейнере s t d : : deq u e, используйте следующий код:


priority_queue , greater > pqlntegers_lnverse;

Подобно стеку, экземпляр очереди может быть создан как копия другой очереди:




std::priority_queue pqCopy(pqlntegers) ;

Создание экземпляра класса p r i o r i t y _ q u e u e представлено в листинге 24.5.





  1. И С Т И Н Г 2 4 .S . Создание экземпляра класса priority queue__________________________





  1. Download 1,38 Mb.

    Do'stlaringiz bilan baham:
1   ...   378   379   380   381   382   383   384   385   ...   437




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish