Tablica dwuwymiarowa z określonym jednym wymiarem
Ostatnio zmodyfikowano 2014-02-28 19:04
domin568 Temat założony przez niniejszego użytkownika |
Tablica dwuwymiarowa z określonym jednym wymiarem » 2014-02-28 15:08:21 Witam, piszę zadanie na SPOJ i stwierdziłem że potrzebna mi będzie tablica dwuwymiarowa, z jednym wymiarem, który będzie znany od początku. Próbowałem takiego kodu : while( true ) { std::cin >> liczbaPrzypadkow; if( liczbaPrzypadkow > 0 && liczbaPrzypadkow < 30 ) { break; } } int * tablica = new int[ liczbaPrzypadkow ][ 2 ];
Ale kompilator nie zgadza się z tym :) Wiem że rozmiar tablicy powinien być znany w czasie jej inicjalizacji. Jednak nie wiem jak to poprawnie rozwiązać. Myślałem o std::vector ale ta tablica ma tylko jeden wymiar, proszę o pomoc :) |
|
Adik80 |
» 2014-02-28 15:31:25 moze jakos tak: int * tablica[ 2 ]; for( int i = 0; i < 2; ++i ) tablica[ i ] = new int[ iloscPrzypadkow ]; albo z uzyciem tablicy vektorow: std::vector < int > tablica[ 2 ]; tablica[ 0 ].push_back( 0 ); |
|
michal11 |
» 2014-02-28 16:19:42 Mozesz stworzyc vector vectorow, vector < vector < int > > tablica
albo dynamicznie zaalokowac obydwa wymiary. Tylko musisz pamiętac o odpowiednim zwolnieniu pamięci. int ** tab = new int *[ 2 ];
for( int i = 0; i < 2; i++ ) { tab[ i ] = new int[ liczbaPrzypadkow ]; }
for( int i = 0; i < 2; i++ ) { delete[] tab[ i ]; } delete[] tab;
|
|
Monika90 |
» 2014-02-28 17:22:16 int * tablica = new int[ liczbaPrzypadkow ][ 2 ]; |
Masz zły typ, powinno być int( * tablica )[ 2 ] = new int[ liczbaPrzypadkow ][ 2 ]; A zresztą, jeżeli liczba przypadków jest mniejsza od 30, to możesz zwyczajnie zadeklarować: int tablica[ 30 ][ 2 ]; i już. |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2014-02-28 19:04:10 @Adik80 i @michal11 bardzo dziękuję za odpowiedzi, na pewno spróbuje waszej metody :) @Monika nie chce tracić pamięci, bo zawsze około 70 bajtów (np. jeżeli są tylko 2 pomiary) to jest coś, czy nie przejmować się za bardzo tym ? (chce przyzwyczaić się do dobrych metod :)) |
|
« 1 » |