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

Dynamiczna tablica dwuwymiarowa double

Object Storage Arubacloud
0 głosów
1,475 wizyt
pytanie zadane 21 marca 2016 w C i C++ przez Corazzo Obywatel (1,040 p.)

Witam!

    double wiersze = 10;
    double kolumny = 6;

    double **tab;
    tab = new double *[wiersze];

    for (int i=0; i<wiersze; i++)
        {
        tab[i] = new double [kolumny];
        }

 

Sprawa wygląda tak, że przy robieniu dwuwymiarowej tablicy double gdy kompiluje program to wyskakuje błąd:

error: expression in new-declarator must have integral or enumeration type

Gdy robię ten sam sposób a tylko podmienię typ zmiennych na int - wszystko działa.

Również działa gdy zamiast:

tab = new double *[wiersze];
tab [i] = new double [kolumny];

napiszę:

tab = new double *[10];
tab [i] = new double [6];

Lecz czemu wyskakuje błąd w wersji pierwszej?

 

Z góry dziękuje za pomoc!

2 odpowiedzi

+3 głosów
odpowiedź 21 marca 2016 przez draghan VIP (106,230 p.)
wybrane 21 marca 2016 przez Corazzo
 
Najlepsza

Dlatego, że ilość elementów tablicy MUSI być całkowita. Typ elementów to inna sprawa, ale liczba określająca wymiar tablicy musi być całkowita.

int wiersze = 10; // wymiary tablicy (int)
int kolumny = 6;
 
double **tab; // elementy tablicy (double)
tab = new double *[wiersze];

 

0 głosów
odpowiedź 22 marca 2016 przez sebastian970 Użytkownik (710 p.)
edycja 22 marca 2016 przez sebastian970
Nie musi być całkowita jeżeli używamy "std::vectora" jako tablicy.

"Vector" jest tablicą dynamiczną lub kontenerem(jak zwał tak zwał) nie wymagającą określenia wymiaru tablicy a jego rozmiar może zmieniać się dynamicznie podczas działania programu.

Jest to dobre rozwiązanie ze względu na zaoszczędzoną pamięć bo w przypadku zwykłych tablic puste miejsca w tablicy także zajmują pamięć.

Poczytaj sobie o tym. Nie jest to trudne ;)
komentarz 22 marca 2016 przez draghan VIP (106,230 p.)

Nie musi być całkowita jeżeli używamy "std::vectora" jako tablicy.

Rozumiem, że według Ciebie std::vector może przechowywać 3.75 elementów?

Jest to dobre rozwiązanie ze względu na zaoszczędzoną pamięć

Czy wiesz, że std::vector przy dodawaniu elementu, nie alokuje każdorazowo po jednym, tylko robi sobie wewnętrzny magazyn na więcej elementów, niż w danej chwili jest wymagane?

komentarz 22 marca 2016 przez sebastian970 Użytkownik (710 p.)
Z tą liczbą całkowitą chodziło mi o to, że nie wymaga określenia ilości pamięci potrzebnego dla tablicy. A co do vectora to nie ma co się przyczepiać bo jest rozwiązaniem dla pytającego i z tego co czytałem w internecie jest bardziej przyjazny dla komputera od zwykłej tablicy.
komentarz 22 marca 2016 przez draghan VIP (106,230 p.)
Autor prosił o wyjaśnienie, dlaczego kompilator nie przepuszcza Jego zapisu, nie szukał alternatywy dla tablic dynamicznych.
komentarz 22 marca 2016 przez sebastian970 Użytkownik (710 p.)
Ale znalazł. Jak dla mnie to jak wygrać z rakiem.

Podobne pytania

0 głosów
2 odpowiedzi 399 wizyt
pytanie zadane 6 kwietnia 2016 w C i C++ przez mateusz12 Użytkownik (530 p.)
+1 głos
4 odpowiedzi 4,663 wizyt
pytanie zadane 14 września 2015 w C i C++ przez Wojtek Wiedeński Bywalec (2,460 p.)
0 głosów
1 odpowiedź 477 wizyt
pytanie zadane 13 stycznia 2019 w C i C++ przez Shimeo7 Obywatel (1,910 p.)

92,584 zapytań

141,434 odpowiedzi

319,669 komentarzy

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

...