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

Używanie tablic gdy nie wiemy jaka ma być wielkość

VPS Starter Arubacloud
+1 głos
489 wizyt
pytanie zadane 23 kwietnia 2015 w C i C++ przez falauthy Stary wyjadacz (11,550 p.)
Cześć,

zastanawiam się nad tym w jaki sposób użyć tablicy gdy nie wiemy jaka ilość znaków będzie wprowadzona. Czy do tego używa się wskaźników? Może ktoś więcej na ten temat powiedzieć?

6 odpowiedzi

+1 głos
odpowiedź 23 kwietnia 2015 przez Boshi VIP (100,240 p.)
To się zwie tablica dynamiczna...

Tworzysz wskaźnik na tablicę a potem alokujesz pamięć po przez new.

http://www.cplusplus.com/doc/tutorial/dynamic/
komentarz 23 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
Powiedzmy, że nie chcemy prosić użytkownika o podanie dlugosci tablicy, tylko żeby dostosowała długość do danych wejściowych. Wtedy można użyc myku np. z funkcją .length i długość przypisać do tablicy? Staram się to na swój sposób rozkminić.
komentarz 23 kwietnia 2015 przez Boshi VIP (100,240 p.)
Nie, tablica musi mieć ustalony rozmiar. To o czym piszesz to lista lub vektor.
komentarz 23 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
Z góry przepraszam jak moje pytania są głupie i bezsensu. Jak mam np. podawać jakieś słowa i mam to zapisywać w tablicy, to skąd mam wiedzieć jaki rozmiar ma mieć tablica? Wtedy właśnie trzeba użyć listy albo vectora? Dałbyś radę jakoś to wytłumaczyć prostym przykładem? :)
komentarz 23 kwietnia 2015 przez Boshi VIP (100,240 p.)
Lista vector, stos, kolejka,  lub inna struktura danych, dowolnie.
+1 głos
odpowiedź 23 kwietnia 2015 przez bossik21 Mądrala (5,750 p.)
Najlepiej jak użyjesz wektora ewentualnie listy.
komentarz 23 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
Vector nie jest trochę przestarzały? Przynajmniej tak słyszałem. :)
komentarz 23 kwietnia 2015 przez Boshi VIP (100,240 p.)
Nie jest przestarzały.
+1 głos
odpowiedź 23 kwietnia 2015 przez Szahid Pasjonat (20,930 p.)
Na samym początku filmu o wskaźnikach ( autorstwa MZ) jest poruszone to zagadnienie. Jest napisany konkretny kod
komentarz 23 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
Właśnie jeszcze tego filmu nie oglądałem - chcę jeszcze przeczytać w książce S. Pratha o pętli warunkowej i switch'ach i obejrzę filmy od Pana Mirosława.

Dzięki! :)
komentarz 23 kwietnia 2015 przez Ehlert Ekspert (212,630 p.)
Słyszałem pozytywne opinie o tej książce. Mimo to muszę Ci powiedzieć, że niepodważalną renomą jeśli chodzi o naukę języka C++ jest Symfonia Jerzego Grębosza.
+1 głos
odpowiedź 23 kwietnia 2015 przez Dragonet.17 Pasjonat (19,630 p.)
Dokładnie nazywa się to dynamiczną alokacją pamięci.
Co Ci będę mówił, obejrzyj odcinek Pana Mirosława - Wskaźniki, tam jest to najdokładniej wytłumaczone :D
0 głosów
odpowiedź 23 kwietnia 2015 przez kotfuterkowy Dyskutant (9,220 p.)
edycja 23 kwietnia 2015 przez kotfuterkowy

Może spróbuj w w pętli odwoływać się po indeksie za każdym razem o jeden indeks większym, ale z użyciem bloku try->catch, tak aby nie spowodować wyjątku.

 

Edit (najlepsze pomsły mam jak już wstanę od komputera):

Spróbuj wyliczyć ilość elementów (na moim przykładzie tablica liczb double):

#include <iostream>

int main()
{
	double tab[] = {22.2, 66.03, 21.84, 0.1};
	int size = (int)(sizeof(tab) / sizeof(double));
	std::cout << size << std::endl;
	return 0;
}

 

0 głosów
odpowiedź 25 kwietnia 2015 przez hjester Użytkownik (840 p.)
edycja 25 kwietnia 2015 przez hjester

Jak już zostało wspomniane najlepiej użyć wektora. Używanie dynamicznie alokowanej tablicy nie jest najlepszym rozwiązaniem, na dłuższą mete sprawia wiele problemów z pamięcią, ponadto operowanie na wektorze jest banalnie proste dzięki dzięki bibliotece STL, można zaoszczędzić na pisaniu wielu funkcji, które już są napisane i zapewne zadziałają lepiej niż nasze własne.

 

Można zadać pytanie, dlaczego akurat wektor, a nie lista czy deque. Prosta odpowiedź Bjarne Stratsupa. W skrócie w 99% przypadków lepiej sprawdzi się wektor. Mówi też o tym Chandler Carruth w którymś momencie na cppconf.

Podobne pytania

0 głosów
1 odpowiedź 261 wizyt
pytanie zadane 18 listopada 2018 w C i C++ przez PelikanFix16 Użytkownik (950 p.)
0 głosów
2 odpowiedzi 352 wizyt
pytanie zadane 26 grudnia 2015 w C i C++ przez Kabiszon Użytkownik (890 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...