C++ 2Darray

Programovacie jazyky, rady, poradňa...
eaten
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 891
Registrovaný: 23 jan 2006, 19:59

C++ 2Darray

Príspevok od používateľa eaten »

Zdravím,
chcem sa spýtať, že keď mám v C++ dvojrozmerné pole ako premennu zadanú takto: **array , ako môžem pristupovať k jednotlivým prvkom. Napr. keď som mal jednorozmerné tak to bolo *array a pristupoval som *(array + i)
Som z tych pointrov trochu mimo a na toto fakt neviem prist. :) Dik
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: C++ 2Darray

Príspevok od používateľa metthal »

No takto sa k prvkom pola pristupovalo mozno za cias mojich rodicov. Preco nepouzijes operator[]? Kedze ani nemam momentalne kde vyskusat co ti poradim, len tak trepnem z hlavy, ze skus

Kód: Vybrať všetko

**(array + i)
Pretoze to mi len ako jedine asi dava logiku. Zoberie adresu pointra, pripocita I, a 2 krat zdereferencuje. Ked to budem mat kde vyskusat, tak ti viac poradim. Zatial takto.
eaten
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 891
Registrovaný: 23 jan 2006, 19:59

Re: C++ 2Darray

Príspevok od používateľa eaten »

lebo mam zadanie ze parameter ma vyzerat takto **array, ... a ako pristupim k prvku array[j] ?? Ty si mi tam ukazal len s tym j. Samostatne array[j] nefunguje tak ako nefungovalo array pri jednorozmernom poli

//autoeditácia príspevku (29 Okt 2011, 15:03)
uz to mam bolo to *(*(array + j) + i)
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: C++ 2Darray

Príspevok od používateľa metthal »

Ano, sorry. Ja som zle pochopil co si vlastne pisal v zadani. Ospravedlnujem sa.
johny3212
Star
Star
Používateľov profilový obrázok
Príspevky: 532
Registrovaný: 17 feb 2008, 19:56
Bydlisko: Terchova
Kontaktovať používateľa:

Re: C++ 2Darray

Príspevok od používateľa johny3212 »

K prvkom takehoto pola int *pole; sa pristupuje operatorom []. mozes aj takto *(array + i), ale je to neprakticke. Inak dvojrozmerne polia sa nepouzivaju, stretnes sa s tym iba v matlabe.
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: C++ 2Darray

Príspevok od používateľa metthal »

S tym by som troska nesuhlasil. Ano, nenajde sa vela rieseni pri ktorych potrebujes ukladat informacie do dvojrozmerneho pola, ale su pripady kedy sa najde ze je treba pouzit dvojrozmerne pole. Takze stretnut sa s tym stretnes rozne, nie len v matlabe
johny3212
Star
Star
Používateľov profilový obrázok
Príspevky: 532
Registrovaný: 17 feb 2008, 19:56
Bydlisko: Terchova
Kontaktovať používateľa:

Re: C++ 2Darray

Príspevok od používateľa johny3212 »

Ako pointrer na pointer je bezna vec z C alebo objekt triedy ako pointer ma v sebe pointer na sameho seba. V tom matematickom ponati, ked sa rozpravame o dvojrozmernom poli ako matici alebo aj obraz, sa uklada do jednorozmerneho pola, ktore sa pri vypocte prehladava ako dvojrozmerne. Dvojrozmerne polia typu [][] su skor skolske riesenia. Dnes sa viac pouziva STL na vyssej urovni v C++. Ale toto je skor skolska uloha.

Dvojrozmerne pole mozes aj takto prehladat *(array + j). Ak chces pouzit takyto zapis int **aray; , tak ti odporucam si nastudovat aj dynamicku alokaciu pamate, najdes o tom vela tutorialov na nete.
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: C++ 2Darray

Príspevok od používateľa metthal »

Aha, no ked sa tu uz rozpravame o urovni mimo skoly tak to hej. Dvojrozmerne pole som mimo skolskych zadani hadam ani nevidel. Dnes sa uz vacsinou programuje pomocou OOP, cize tam ani nejako neni nutnost to ukladat do niecoho takeho. Co sa tyka STL tak to mas pravdu. Ja som teraz dlhe roky robil v C++, ale momentalne idem na Objective C kvoli iPhone aplikaciam. Tam su vsetky tieto dictionaries atd nativne v SDK.

PS: Minule som v jednej aplikacii musel pouzit polia ukladane v dictionary, lebo uz som mal aplikaciu prakticky hotovu a nechcelo sa mi prirabat dalsiu classu v ktorom by som to pole ukladal. Ale tiez je pravda ze som do tej classy nic ine okrem toho pola nemal dat, tak aj preto som to nespravil.
Napísať odpoveď