[C++] Klasy operacji na listach

Awatar użytkownika
Borneq
Użytkownik
Użytkownik
Posty: 247
Rejestracja: 23 lip 2010, o 07:50
Płeć: Mężczyzna
Lokalizacja: geo:lat=0 geo:lon=0
Podziękował: 13 razy

[C++] Klasy operacji na listach

Post autor: Borneq »

Lisp czy Clojure mają zaawansowane operacje na listach, ja w C++ nie muszę mieć aż tak zaawansowane, ale jak można zrobić coś takiego:
- nie dodaję jednego elementu, ale tworzę np. 5-10 elementowe drzewko i go dodaję w dowolnym miejscu drzewa,
- jeden element mogę dodać wielokrotnie
- potrzeba klonowania, aby zmiana w jednym elemencie nie powodowała zmiany w innym
- z drugiej strony - klonowanie powinno uwzględniać dziedziczenie i polimorfizm
Mam z czymś takim problem: węzeł powinien być wymieniony na drzewko, ale nie mogę wołać procedury wymiany dla tego węzła, bo co najwyżej zmienię ten element ale jego wskazania już nie, jak to zrobić?
Gdyby wołać z nadrzędnych to ani nie można by wymienić roota, a poza tym duplikował by się kod dla różnych innych typów.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

Re: [C++] Klasy operacji na listach

Post autor: Afish »

Rozdziel węzeł drzewa od jego zawartości, wtedy masz dwukrotne przejście po wskaźnikach, ale możesz zmieniać węzeł na drzewo bez obaw o wskazania na węzeł.
ODPOWIEDZ