Объектно-ориентированное программирование на c++


Download 56.06 Kb.
bet3/8
Sana18.06.2023
Hajmi56.06 Kb.
#1592783
TuriЛекция
1   2   3   4   5   6   7   8

Адаптеры контейнеров

Часто бывает полезно обеспечить ограниченные интерфейсы контейнеров. Библиотека STL предоставляет stack, queue и priority_queue через адаптеры, которые могут работать с различными типами последовательностей.

  • Часто бывает полезно обеспечить ограниченные интерфейсы контейнеров. Библиотека STL предоставляет stack, queue и priority_queue через адаптеры, которые могут работать с различными типами последовательностей.
  • Адаптировать - это значит приспосабливать. То есть приспосабливать существующую сущность, контейнер, итератор и т.д., в новом контексте или для частной задачи.
  • Например, стандартный контейнер двусвязный список std::list имеет такие методы, как push_back, push_front, pop_back, pop_front, front, back.
  • Используя лишь подмножество методов, предоставляемых контейнером std::list, можно смоделировать поведение такой структуры данных, как стек.

stack

  • Любая последовательность, поддерживающая операции back, push_back и pop_back, может использоваться для адаптации stack. В частности, могут использоваться vector, list и deque.
  • template
  • class stack {
  • friend bool operator==(const stack& х,
  • const stack & y);
  • friend bool operator<(const stack& х,
  • const stack & y);
  • public:
  • typedef Container::value_type value_type;
  • typedef Container::size_type size_type;

 protected:

  •  protected:
  • Container c;
  • public:
  • bool empty() const { return c.empty(); }
  • size_type size() const { return c.size();}
  • value_type& top() { return c.back(); }
  • const value_type& top() const {return c.back();}
  • void push(const value_type& х) { с.push_back(х);}
  • void pop() {c.pop_back();}
  • }; // class stack
  •  
  • template
  • bool operator==(const stack & х,
  • const stack & y) {return х.с == у.с;}
  • template
  • bool operator<(const stack& х, const stack& y)
  • {return х.с < у.с;}
  • Например, stack > - целочисленный стек, сделанный из vector, а stack > - символьный стек, сделанный из deque.

Download 56.06 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




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