io_ napisał(a)
Dziękuję za tę odpowiedź, ale muszę napisać, że niestety ogranicza mnie tak prozaiczna kwestia jak czas i nie zdążyłbym najpewniej napisać żądanego wzorca idąc tą drogą w czasie, jakim dysponuję. To nie znaczy, że przypomniałem sobie o zadaniu na kilka dni przed terminem, po prostu oprócz tego muszę opanować jeszcze zbyt wiele innych rzeczy. Szczerze chciałbym się w to zagłębić, bo zajmuję się tym ze względu na zainteresowanie, ale w tej chwili muszę poprosić o pomoc w napisaniu tego, co stanowi "podstawowe wymagania", po rozważeniu wszystkich okoliczności.
Acha i dlatego postanowiłeś użyć najbardziej powolnego i niegwarantującego rozwiązania sposobu jakim jest napisanie na forum? To żeś się popisał sprytem.
No chyba, że szukasz buraka który za darmochę napisze to za ciebie? Tu nie odbieram nadziei, może się tu taki trafić.
io_ napisał(a)
Chcę prosić o ocenę tego, co "wymyśliłem" w konstruktorze węzła.
Czyli tego kawałka kodu:
at_node (const ID * k, const Info & c) : next(NULL)
{
unsigned int ksize = sizeof(k)/sizeof(k[0]);
key = new ID[ksize];
for (int i = 0; i < ksize; i++)
*(key+i) = *(k+i);
content = c;
}
ksize, dzielisz rozmiar wskaźnika, przez rozmiar typu na który wskaźnik wskazuje, ale co tam, może jest w tym geniusz, zobaczmy to w akcji, dlatego zmieniam private na public w as_tab i w mainie mogę sobie pozwolić na:
int a=3,b=6;
as_tab<int,int>::at_node node(&a,b);
Bardzo toporna obsługa, ale spróbujmy to skompilować ... nie kompiluje się, dobra poprawiam w kodzie to o co się pluł(inicjalizacja referencji i warn za porównywanie signed z unsigned), poszło. Jaką wartość ma ksize? U mnie 8/4, czyli 2. Key jest tablicą 2 intów, z czego pierwszy zawiera klucz właściwy, a w drugim skopiowane śmieci, możliwe że nie ze swojej pamięci. Dla klucza typu char(jeden znak) klucz byłby 8 elementową tablicą, fajnie.
Coś tam pisałeś, że kluczem może być też napis, czyli jaki const char*?
Zobaczmy, zmieniam maina
as_tab<const char*,int>::at_node node("Ala",b);
I się nie kompiluje, kolizja z konstruktorem kopiującym. To zrobiło się nudne.
Do tego można zaliczyć brak dealokacji tablicy key w destruktorze(a tego tu nie ma), niesprawdzanie czy alokacja się udała, content może dostać referencję na zmienną lokalną, albo tą samą zmienną która będzie używana przy konstrukcji innych nodów np. w pętli, itd.
I jak to teraz ocenić? A może to ja robię inaczej niż ty chciałeś to używać.
Reszta kodu, to nie na moją skacowaną głowę, kiedy indziej na to zerknę.