Pojemniki -wprowadzenie

Pojemniki

Powtarzający się kod

Efektywna implementacja pojemników nastręcza pewne trudności, które rozważymy na przykładzie prostego pojemnika jakim jest stos. Załóżmy, że dysponujemy kodem klasy Stack realizującej dynamicznie zmieniający się stos liczb całkowitych o interfejsie
  class Stack{
    struct Link;
    Link* head;
  public:
    Stack();
    void push(int i);
    int pop();
  };
Chcielibyśmy wykorzystać ten kod, by zaimplementować podobny stos, ale dla innego typu na przykład double lub Complex.
  class Stack{
    struct Link;
    Link* head;
  public:
    Stack();
    void push(Complex i);
    Complex pop();
  };
Analogiczny problem pojawia się dla pojemników dowolnego typu. Nasuwają się dwa rozwiązania:

Rodzaje pojemników

Typowe pojemniki sekwencyjne to Typowe pojemniki asekwencyjne to

Porównanie nazw pojemników w C++, C# i Javie

C++ C# Java
dynamiczna tablica vector List ArrayList
dwustronna dynamiczna tablica deque - ArrayDeque
linkowana lista list LinkedList LinkedList
zbiór w formie drzewa set SortedSet TreeSet
słownik w formie drzewa map SortedDictionary TreeMap
zbiór w formie hasza - HashSet HashSet
słownik w formie hasza - - HashMap