Zaawansowane CPP/Ćwiczenia 10: Inteligentne wskaźniki: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 10: | Linia 10: | ||
}} | }} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span><div class="mw-collapsible-content" style="display:none"> | ||
Zobacz szablon <tt>Linked_reference_counter</tt> w pliku [http://osilek.mimuw.edu.pl/images/ | Zobacz szablon <tt>Linked_reference_counter</tt> w pliku [http://osilek.mimuw.edu.pl/images/0/09/Ref_ptr.h ref_ptr.h]. | ||
</div></div> | </div></div> | ||
Linia 28: | Linia 28: | ||
};</nowiki> | };</nowiki> | ||
}} | }} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span><div class="mw-collapsible-content" style="display:none"> | |||
Zobacz szablon <tt>Intrusive_counter_impl</tt> w pliku [http://osilek.mimuw.edu.pl/images/0/09/Ref_ptr.h ref_ptr.h]. | |||
</div></div> | |||
{{cwiczenie|4|| | {{cwiczenie|4|| | ||
Wersja z 13:31, 21 wrz 2006
Ćwiczenie 1
Napisz testy sprawdzające działanie szablonu inteligentnego wskaźnika opartego na zliczaniu referencji.
Ćwiczenie 2
Napisz klasę wytyczną do wskaźnika Ref_ptr
opartą o
listę referencji.
Rozwiązanie
Ć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;}; };
Rozwiązanie
Ć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; }
Iterator powinien realizować przechodzenie drzewa "wgłąb", zaczynając od lewej strony. Dodaj do drzewa odpowiednie instrukcje begin i end, zwracające iteratory na początek i za koniec drzewa.
Podpowiedź
Rozwiązanie