понедельник, 13 июня 2011 г.

Урок 11. C++. STL Стеки и очереди (stack and queue)

Стеки (stack)

Стеки - это множество элементов, сложенных в стопку. Например, у нас есть коробка 3х5. Мы кладем в нее доски такого же размера с различными узорами. У нас получается стек. Достать из него мы можем только начинаяя с последнего элемента, поэтому первый положенные элемент вынут будет последним. В стеках реализуется принцип first in last out (FILO).
Для создания стека нужно подключить <stack> и в коде программы его объявить:
stack <type> name, где type - тип стека, а name - имя стека.
У стека есть немного функций:
  • push() - добавить элемент
  • pop() - удалить верхний элемент
  • top() - получить верхний элемент
  • size() - размер стека
  • empty() - true, если стек пуст
Пример:
string s;

stack <string> st;

while (cin>>s);

st.push(s);

while (!(st.empty()))

{cout<<st.top();st.pop()}
В этом примере мы считываем слова с клавиатури и выводим их в обратном порядке

Очереди (Queue)

Очереди, как следует из название, используют принцип first in first out (FIFO). То есть, тот, кого мы первым запихнули в очередь, первым из нее и выйдет (хотя в реальной жизни не всегда так....)
Реализуются очереди также просто.
Подключаем <queue>
И создаем очередь
queue <type> name;
Перечень функций почти тот-же:
  • push() - добавить элемент
  • pop() - удалить первый элемент
  • size() - размер очереди
  • empty() - true, если очередь пуста
  • front() - получить первый элемент
  • back() - получить последний элемент
Пример:
queue <int>  events;

int n;

while (cin>>n)

events.push(n);

while (!events.empty)

{make(events.front());events.pop()}
В данном примере make - какая-то функция, обрабатывающая события.

1 комментарий:

  1. Есть ли ограничения в размерах стека, и если есть, то как их снять

    ОтветитьУдалить