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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Linia 1: Linia 1:
''Uwaga: przekonwertowane latex2mediawiki; prawdopodobnie trzeba wprowadzi� poprawki''
 
 
{Inteligentne wskaźniki}
 
 
 
'''Zadanie 1 '''  Napisz testy sprawdzające działanie szablony
 
'''Zadanie 1 '''  Napisz testy sprawdzające działanie szablony
 
inteligentnego wskaźnika opartego na zliczaniu referencji.
 
inteligentnego wskaźnika opartego na zliczaniu referencji.
  
'''Zadanie 2 '''  Napisz klasę wytyczna do wskaźnika <code><nowiki> Ref_ptr</nowiki></code> opartą o
+
'''Zadanie 2 '''  Napisz klasę wytyczna do wskaźnika <code><nowiki>Ref_ptr</nowiki></code> opartą o
 
listę referencji.  
 
listę referencji.  
  
'''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:
+
'''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:
  
  <nowiki> class Handle {
+
  <nowiki>class Handle {
 
private:
 
private:
 
   size_t _count;
 
   size_t _count;
Linia 20: Linia 16:
 
   bool remove_ref()        {--_count; return _count == 0;}
 
   bool remove_ref()        {--_count; return _count == 0;}
 
   size_t count() const    {return _count;};
 
   size_t count() const    {return _count;};
};
+
};</nowiki>
</nowiki>
 
  
 
'''Zadanie 4 '''  
 
'''Zadanie 4 '''  
Linia 27: Linia 22:
 
kontenera.  
 
kontenera.  
 
   
 
   
'''Zadanie 5 '''  Zaimplementuj iterator realizujący przechodzenie po drzewie binarnym. Drzwo opearte jest o strukturę:
+
'''Zadanie 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 {
  
 
   class node {
 
   class node {
Linia 39: Linia 34:
 
     node* _root;
 
     node* _root;
  
}
+
}</nowiki>
</nowiki>
 

Wersja z 09:32, 3 wrz 2006

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

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

Zadanie 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;};
};

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

Zadanie 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;

}