[c++] doorgeven 2d array aan procedure

Pagina: 1
Acties:

  • tekno
  • Registratie: September 2001
  • Laatst online: 29-07 12:33
Ik ben op dit moment bezig met het programmeren in c++, aan een voor mij groot project. En ik loop tegen het probleem aan dat ik een 2d array moet doorgeven aan een procedure, (of ja moet, anders kan ik niets verdelen over bestanden en wordt het totaal onoverzichtelijk) maar dat wil niet echt lukken.

Ik heb een tijdje liggen zoeken en het beste wat ik tegenkwam was dit:

c++ 2d array door geven

maar, hier wordt ervan uitgegaan dat de grote van de array van tevoren bekend is.

Stel ik heb in mijn main een int 2d array a waarvan de grote vooraf niet bekend is.
Maar tijden runtime b.v. grote m x n krijgt.
dus a[m][n].
Hoe kan ik deze 'dynamische' array dan doorgeven aan een andere procedure,
omdat:

void doejeding (int matrix[][])
{
//hier bewerkingen toepassen
}

dus niet werkt.

Maar dit kan dus niet omdat de compiler de lengte van de kolommen moet weten, dus dit [][] pikt hij niet en ik moet dus een grote voor de kolommen opgeven.

Maar het is dus de bedoeling dat dit dynamisch gebeurt.
En het kan wel opgelost worden door over te stappen op vectoren of iets anders, maar ik zou gewoon graag weten of dit gewoon mogelijk is op een enigzins directe wijze.

Dus dat is eigenlijk mijn vraag bij deze

Verwijderd

ok... geen antwoord op je vraag, maar volgens mij ben je beter met een 1 dimensionale array ter grootte van (x*y). Met een heel eenvoudig rekensommetjes kun je zo (x,y) indexeren.

  • tekno
  • Registratie: September 2001
  • Laatst online: 29-07 12:33
klopt, ik weet ook wel een aantal mogelijke oplossingen om dit probleem te omzeilen, maar ik vraag me af of er ook gewoon een oplossing is.

Wat dan heb ik dus een enkele array van ongeveer een miljoen elementen.

Maar het is in ieder geval een goede suggestie ja, bedankt

  • tekno
  • Registratie: September 2001
  • Laatst online: 29-07 12:33
aangezien er niemand gereageerd heeft neem ik aan dat niemand zo snel een oplossing weet, misschien kan ik mijn vraag dan lichtelijk veranderen. Welk alternatief kan ik het beste gebruiken. Zodat het geheugengebruik minimaal blijft en de snelheid ongeveer hetzelfde blijft. Iets trager mag wel overigens.

modbreak: Kicken aub pas na 24 uur, geef de bezoekers een kans om je topic te vinden en te lezen :)

[ Voor 19% gewijzigd door curry684 op 30-10-2003 13:52 ]


  • Rowwan
  • Registratie: November 2000
  • Laatst online: 16:56
Hoe heb je je array gedeclareerd?? Met pointers?? (Ja, want anders is a[m][n] niet mogelijk)

Je zult dus ook deze pointer moeten doorgeven...

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 17:14
C++ is een OO taal, dus gebruik een 2D array class, of een algemene N-dimensonale class.
Bijvoorbeeld [url=www.boost.org\libs\multi_array\doc\user.html]boost::multi_array[/]

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1