• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Szablon listy jednokierunkowej

Object Storage Arubacloud
0 głosów
974 wizyt
pytanie zadane 9 listopada 2015 w C i C++ przez JachuPL Bywalec (2,950 p.)
zamknięte 9 listopada 2015 przez JachuPL

Cześć. Stworzyłem prosty szablon listy jednokierunkowej (w ramach ćwiczeń). Dysponuję dwiema strukturami, jedna z polami int int, druga z polami string int, nazwy pól są unikalne i nie powtarzają się w strukturach (tj. nie ma sytuacji, że w obu strukturach występuje pole o takim samym typie i nazwie jak w drugiej). By móc wyszukiwać wartości na liście, muszę jakoś rozróżnić te dwie struktury. Jak mogę najprościej tego dokonać w taki sposób, by nie było różnic zależnie od platformy? Z góry dzięki i pozdrawiam

 

//edit: wrzuciłem taki trochę pseudokod, całego dokładnego kodu nie mogę niestety podać

 

struct Struktura1
{
	int zmiennaS11;
	int zmiennaS12;
};
struct Struktura2
{
	std::string zmiennaS21;
	int zmiennaS22;
};

template <class T> class CLista
{
	...	//jakieś metody, konstruktory, pola.
	T* glowa;	//glowa listy
	
	T* Znajdz([jakaś wartość do wyszukania - klucz])
	{
		//funkcja szukająca w liście podanej frazy.
		//jak ją przystosować do tego, by mogła szukać zarówno w liście struktur Struktura1 i w liście struktur Struktura2?
	}
};

 

komentarz zamknięcia: Udzielono odpowiedzi w komentarzu

1 odpowiedź

0 głosów
odpowiedź 9 listopada 2015 przez Rogargol Pasjonat (16,600 p.)
Wrzuc moze kod, bo mowiac szczerze jakos nie bardzo rozumiem o co Ci chodzi.
komentarz 9 listopada 2015 przez JachuPL Bywalec (2,950 p.)

wrzuciłem do głównego posta pseudokod, ponieważ nie mogę podać dokładnego kodu. Chodzi mi o to, że skoro w jednej strukturze mam pole zmiennaS12, to jeśli odwołam się do niego w szablonie, a będzie to lista struktur Struktura2, to program się posypie. I tutaj właśnie powstaje problem - w jaki sposób odróżnić te dwie struktury, by program wykonywał operacje dla określonej struktury. Coś na zasadzie:
 

if (obiekt przekazany w argumencie jest typu Struktura1)
{
	wykonaj zestaw operacji wyszukiwania na obiektach typu Struktura1 (szukanie po int)
}
else
{
	wykonaj zestaw operacji wyszukiwania na obiektach typu Struktura2 (szukanie po stringu)
}

 

komentarz 9 listopada 2015 przez adrian17 Ekspert (345,160 p.)
Napisz dwie metody Znajdz, jedną przeładowaną dla Struktura1, drugą dla Struktura 2, tyle. (To, że to co chcesz zrobić niweczy cel używania szablonów w samej liście to inna sprawa.)

(Alternatywnie napisz find_if któremu będziesz przekazywał funkcję sprawdzającą czy element jest zgodny.)

(Alternatywnie napisz porządny interfejs do iteratorów i użyj std::find/std::find_if z biblioteki standardowej.)
komentarz 9 listopada 2015 przez JachuPL Bywalec (2,950 p.)
Czyli bardziej zgodne ze standardami byłoby zrobienie dwóch oddzielnych klas-list obsługujących te struktury niezależnie. Dzięki w takim układzie :)

Podobne pytania

0 głosów
2 odpowiedzi 474 wizyt
pytanie zadane 7 maja 2017 w C i C++ przez krzakurts Obywatel (1,470 p.)
0 głosów
1 odpowiedź 325 wizyt
pytanie zadane 31 stycznia 2020 w C i C++ przez Biały17 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 478 wizyt

92,592 zapytań

141,441 odpowiedzi

319,702 komentarzy

61,975 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...