Tablica tablic

Alcadur

Użytkownik
Dołączył
Listopad 10, 2007
Posty
107
Witam wie może jak można w C++ zadeklarować parę tablic np. typu int i potem żeby te tablice były zawartością innej tablicy? Tak jak kombinowałem to doszedłem do czegoś takiego:
Kod:
int tab1[] = {72747277,7278,7279,7282,7283,7284};
int tab2[] = {7272,7273,7281,7285,7286,7287,7955,8811,8818,7288,7289};
int tab3[] = {7951,7952,7953,7275,7276,7954,8833,8838,8841,8842};

/*--------------------------------*/

int tab_all[] = {tab1,tab2,tab3,};
ale niestety to nie działa. Wyrzuca błąd: E2034 Cannot convert 'int*' to 'int'
 

Magnefikko

Były Moderator
Dołączył
Maj 29, 2004
Posty
709
Daj wskaźniki do tablic po prostu.

int *tab_all[] = {&tab1,&tab2,&tab3,};

Czy jakoś tak. Dawno nie kodziłem w C++.
 

tobix10

Użytkownik
Dołączył
Luty 25, 2009
Posty
65
Cannot convert 'int*' to 'int'[/b]
To mówi samo za siebie. Magnefikko podał dobry przykład.

Nazwa tablicy jest jednocześnie jej stałym adresem początku(el. o indeksie 0), więc potrzebujesz wskaźnika, żeby ją do niego przypisać.
 

Alcadur

Użytkownik
Dołączył
Listopad 10, 2007
Posty
107
Dzięki
smile.gif
A możecie jeszcze powiedzieć jak pobrać rozmiar tej tablicy wewnętrznej (ilość elementów), próbowałem sizeof(tab_all)/sizeof(int) ale to zwraca zawsze 1 (oczywiście w pętli)
 

grzonu

Były Moderator
Dołączył
Grudzień 26, 2006
Posty
1390
to tak nie zadziala .. bo dalsze elementy nie beda czecia tablicy

ale istnieje taki twor jak tablice wielowymiarowe czyli cos jak tablica tablic
 

Alcadur

Użytkownik
Dołączył
Listopad 10, 2007
Posty
107
Ale tablica wielowymiarowa nie wchodzi w gę ponieważ muszę mieć te wszystkie dane również jako osobne tablice wiec była by to utrata pamięci, rozwiązałem to w tak sposób, że dodałem jeszcze jedną tablice z rozmiarami kolejnych tablic
 

grzonu

Były Moderator
Dołączył
Grudzień 26, 2006
Posty
1390
mozesz zrobic tablice wskaznikow na tablice
 

grzonu

Były Moderator
Dołączył
Grudzień 26, 2006
Posty
1390
ale to co przedstawiles to bedzie tablica wskaznikow tyle ze nie odwolasz sie tak do dalszych elementow tablicy.
beda traktowane jako zwykle liczby i kompilator sie przyczepi do tego i nie pozwoli ci sie do nich odwolac jak do tablic.

Kod:
int tab1[] = {72747277,7278,7279,7282,7283,7284};
int tab2[] = {7272,7273,7281,7285,7286,7287,7955,8811,8818,7288,7289};
int tab3[] = {7951,7952,7953,7275,7276,7954,8833,8838,8841,8842};

int* t[3];
t[0]=tab1;
t[1]=tab2;
t[2]=tab3;

//teraz mozesz sie odwolac naprzyklad t[1][3]
 
Do góry Bottom