• 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ść

Object Storage Arubacloud
+1 głos
515 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,670 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ź 276 wizyt
pytanie zadane 18 listopada 2018 w C i C++ przez PelikanFix16 Użytkownik (950 p.)
0 głosów
2 odpowiedzi 363 wizyt
pytanie zadane 26 grudnia 2015 w C i C++ przez Kabiszon Użytkownik (890 p.)

92,539 zapytań

141,382 odpowiedzi

319,481 komentarzy

61,928 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!

...