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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+1 głos
933 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,970 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 (214,270 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ź 391 wizyt
pytanie zadane 18 listopada 2018 w C i C++ przez PelikanFix16 Użytkownik (950 p.)
0 głosów
2 odpowiedzi 425 wizyt
pytanie zadane 26 grudnia 2015 w C i C++ przez Kabiszon Użytkownik (890 p.)

93,103 zapytań

142,079 odpowiedzi

321,591 komentarzy

62,445 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...