Wpis z mikrobloga

Szablony w #cpp

Ktoś byłby w stanie podać realne zastosowanie tego? W pewnym momencie zaczyna się pisać jakieś super programy, które wymagają pisania własnych szablonów, czy jednak da się wszystko robić na kontenerach? Bardzo w to wątpię i mam wrażenie, że coś mi umyka. Coś dużego xD

Robię program do zarządzania magazynem komponentów elektronicznych i z racji, że jest to projekt na studia, muszę tu gdzieś na siłę wcisnąć szablon, ale za cholerę nie wiem gdzie, jak i po co. Wiem, że "po co" nie ma sensu, gdy wykładowca wymaga użycia na siłę, ale dalej problem pozostaje.

#naukaprogramowania
  • 10
  • Odpowiedz
@Asparte: Tak, rozumiem. Ale po co miałbym używać szablonów, skoro mogę to samo zrobić za pomocą dziedziczenia? Czy jesteś w stanie podać mi jakieś zalety jednego rozwiązania nad drugim?
  • Odpowiedz
@greebqmaster: z dziedziczeniem jest tak, że nie powinno się go stosować, dopóki nie jest niezbędne. Jako przykład niech będzie własny algorytm sortowania dla dwóch typów danych. Nie ma sensu pisać dwóch funkcji, które działają identycznie, skoro można napisać jeden szablon i mieć to z głowy. Kod jest wtedy bardziej czytelny.
  • Odpowiedz
@greebqmaster: no ale popatrz chociaz na std::sort. Wyobrazasz sobie, ze dla kazdego typu, ktory chcesz sortowac musisz miec klase dziedziczaca np. po "Sortable" (nazwa wzieta z czapy)? A co z typami prostymi? Tworzylbys specjalna subklase interfejsu "Sortable" tylko po to, zeby zamknac w niej int-a?
  • Odpowiedz
@greebqmaster: Jest jeszcze jedna bardzo wazna sprawa szablony (musialem sie kurde kilka minut zastanawiac co to jest) sa szybsze. Sporo obliczen jest wykonywana podczas kompilacjii.
  • Odpowiedz
@greebqmaster: No i jak piszesz jakiś własny kontener, najprostszy przykład: macierz z wbudowanymi podstawowymi operacjami. Jeszcze możesz dorzucić wtedy wymiaru do szablony i działa to jak std::array, wszystko dzieje się na etapie kompilacji.
  • Odpowiedz