Nieograniczona tablica bez STL'a

0

Mam taki problem. Chce wprowadzić kilkanaście wartości i będę je wprowadzał dopóki nie podam wartości przeze mnie kończącej wprowadzanie. Oczywiście chce potem każdy element z osobna móc wykorzystać. Proszę o wyjaśnienie jak mam to zrobić bez użycia STL'a.

0

Napisać sobie implementacje listy jedno/dwu kierunkowej?

0

Ja bym napisał klasę działającą jak stl::vector i ją wykorzystał. Pamiętaj o tym, żeby powiększać miejsce przechowywania o jakiś czynnik (np. dwukrotnie za każdym powiększeniem), a nie o stałą ilość elementów, żeby zapewnić odpowiednią złożoność.

0

To czy lista, czy wektor, to zależy od późniejszego zastosowania. Czy zależy na szybkim przeszukiwaniu elementów (wtedy wektor), czy na szybkie dodawanie elementów (wtedy lista). Musisz przemyśleć temat, poczytać w necie o tych implementacjach i jedną z nich wykorzystać.

0

Czy zależy na szybkim przeszukiwaniu elementów (wtedy wektor), czy na szybkie dodawanie elementów (wtedy lista)
Pod warunkiem, że to dodawanie do listy nie wymaga przeszukiwania listy za każdym razem, bo wtedy będzie to wolniejsze od wektora, o czym się często zapomina.

0

Ogólnie tablice są złe i lepiej napisać jakąś własną strukturę, ale jeżeli bardzo chcesz tablice która dynamicznie się zdefiniuje to możesz zrobić np tak

int a = 0;
cin >> a;
int *tab = new int[a];
 

w zależności co podasz to wtedy taką tablice stworzy (tylu elementową)

0
adx napisał(a):

Chce wprowadzić kilkanaście wartości
Na kilkanaście wartości nie ma co robić rozszerzalnego bufora. Użyj tablicy o stałym, z góry określonym rozmiarze (np. 100 elementów). No chyba, że faktycznie nie da się lub nie można ograniczyć ilości elementów przez jakąś sensowną wartość maksymalną...

0

możesz zaimplementować sobie swój własny wektor za pomocą funkcji malloc jak kończy się zakres tablicy to przepisujesz wszystkie elementy do nowo zarezerwowanego obszaru. oczywiście ta nowa tablica jest odpowiednio większa(tzn powiększamy ją o trochę więcej niż trzeba aby za każdym razem nie trzeba było przepisywać wszystkiego do nowej tablicy).

1 użytkowników online, w tym zalogowanych: 0, gości: 1