Zaawansowane CPP/Ćwiczenia 10: Inteligentne wskaźniki: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Rogoda (dyskusja | edycje)
Rogoda (dyskusja | edycje)
Nie podano opisu zmian
Linia 1: Linia 1:
'''Zadanie 1 '''  Napisz testy sprawdzające działanie szablony
{{cwiczenie|1||
 
Napisz testy sprawdzające działanie szablony
inteligentnego wskaźnika opartego na zliczaniu referencji.
inteligentnego wskaźnika opartego na zliczaniu referencji.
}}
{{cwiczenie|2||


'''Zadanie 2 '''  Napisz klasę wytyczna do wskaźnika <code><nowiki>Ref_ptr</nowiki></code> opartą o
Napisz klasę wytyczna do wskaźnika <code><nowiki>Ref_ptr</nowiki></code> opartą o
listę referencji.  
listę referencji.  
}}
{{cwiczenie|3||


'''Zadanie 3 '''  Napisz klasę wytyczną do wskaźnika <code><nowiki>ref_ptr</nowiki></code> opartą o licznik we wskazywanym obiekcie. Załóż, że obiekty wskazywane dziedziczą z klasy:
Napisz klasę wytyczną do wskaźnika <code><nowiki>ref_ptr</nowiki></code> opartą o licznik we wskazywanym obiekcie. Załóż, że obiekty wskazywane dziedziczą z klasy:


  <nowiki>class Handle {
  <nowiki>class Handle {
Linia 17: Linia 23:
   size_t count() const    {return _count;};
   size_t count() const    {return _count;};
};</nowiki>
};</nowiki>
 
}}
'''Zadanie 4 '''
{{cwiczenie|4||
Zaimplementuj iterator pozwalający wkładać wartości na koniec
Zaimplementuj iterator pozwalający wkładać wartości na koniec
kontenera.  
kontenera.  
}}
'''Zadanie 5 '''  Zaimplementuj iterator realizujący przechodzenie po drzewie binarnym. Drzewo oparte jest o strukturę:
{{cwiczenie|5||
 
Zaimplementuj iterator realizujący przechodzenie po drzewie binarnym. Drzewo oparte jest o strukturę:


  <nowiki>template<typename T> class binary_tree {
  <nowiki>template<typename T> class binary_tree {
Linia 35: Linia 44:


}</nowiki>
}</nowiki>
}}

Wersja z 19:10, 10 wrz 2006

Ćwiczenie 1

Napisz testy sprawdzające działanie szablony inteligentnego wskaźnika opartego na zliczaniu referencji.

Ćwiczenie 2

Napisz klasę wytyczna do wskaźnika Ref_ptr opartą o listę referencji.

Ćwiczenie 3

Napisz klasę wytyczną do wskaźnika ref_ptr opartą o licznik we wskazywanym obiekcie. Załóż, że obiekty wskazywane dziedziczą z klasy:

class Handle {
private:
  size_t _count;
public:
  Handle():_count(0){};

  void add_ref()           { ++_count;}
  bool remove_ref()        {--_count; return _count == 0;}
  size_t count() const     {return _count;};
};

Ćwiczenie 4

Zaimplementuj iterator pozwalający wkładać wartości na koniec kontenera.

Ćwiczenie 5

Zaimplementuj iterator realizujący przechodzenie po drzewie binarnym. Drzewo oparte jest o strukturę:

template<typename T> class binary_tree {

  class node {
    T _val;
    node *_left;
    node *_right;
    }

    node* _root;

}