dvojrozmerne pole ukazatelov

Sekcia: Programovanie 22.11.2009 | 23:03
Avatar pison openSUSE 13.1, KDE 4.12.3  Používateľ
caute , jako by ste spravili dvojrozmerne pole ukazatelov tohto typu CvHistogram * , a tak aby som mohol predavat riadky z toho pola dalej nejakej funkcii.

diki za pomoc
    • Re: dvojrozmerne pole ukazatelov 22.11.2009 | 23:44
      Avatar vreten Debian-lenny  Používateľ
      Skus takto:
      CvHistogram *pole = new CvHistogram*[rozmerA];
      for(int i=0;i<rozmerA;i++)
      {
      pole[i] = new CvHistogram [rozmerB];
      }
      • Re: dvojrozmerne pole ukazatelov 22.11.2009 | 23:57
        Avatar pison openSUSE 13.1, KDE 4.12.3  Používateľ
        nefunguje, vyhlasi zopar chyb.
        • Re: dvojrozmerne pole ukazatelov 23.11.2009 | 00:37
          Avatar vreten Debian-lenny  Používateľ
          Jasne ze to vyhlasi chyby. ma byt **pole a nie *pole.
    • Re: dvojrozmerne pole ukazatelov 23.11.2009 | 00:03
      Avatar dash Gentoo  Používateľ
      Na co taku divocinu potrebujes? :D To sme riesili v prvom semestri a potom uz nikdy viac, a ani to nikdy viac nebudes potrebovat :D

      Neviem co presne myslis. Objasni, pripadne napis inac, nepochopil som.
      Nieco takeho? Premenna vajko je dvojrozmerne pole vracajuce ukazovatel na typ CvHistogram.
      CvHistogram *vajko[][];

      Porom do funckie je to:
      funkcia(vajko[][]);

      Potom funkcia ma tvar:
      ...funkcia(CvHistogram *vajko[][]);
      • Re: dvojrozmerne pole ukazatelov 23.11.2009 | 00:07
        Avatar pison openSUSE 13.1, KDE 4.12.3  Používateľ
        jednoduho potrebujem urobit tolko poli kolko je argumentov, a aby som to nemusel natvrdo tam davat tak to chcem nejako spravit cez dvojrozmerne pole. a problem je este aj v tom ze cvhistogram funguje len jako ukazatel
      • Re: dvojrozmerne pole ukazatelov 23.11.2009 | 10:17
        still   Návštevník
        Ale Michal, dvojrozmerne polia sa pouzivaju celkom bezne. ;)

        Tvoj CvHistogram *vajko[][]; je ukazovatel na dvojrozmerne pole, teda v podstate trojrozmerne pole ***vajko, ktore je uz nadbytocne.

        To pison: Pre pripade, ze ma pole n*n (rovnaky pocet stlpcov a riadkov), pouzi jednorozmerne pole. A pri pristupovani k jednotlivym polozkam si index dopocitaj.
        CvHistogram *pole = new CvHistogram[n*n];
        
        //pre vypis celeho pola (matice)
        for(i = 0; i < n; i++)
          for(j = 0; j < n; j++)
             pole[i*n + j];        // alebo (j*n + i) - stlpce vs. riadky
        • Re: dvojrozmerne pole ukazatelov 25.11.2009 | 13:35
          Avatar Miroslav Bendík Gentoo  Administrátor
          Jednorozmerné pole sa dá použiť aj v prípade, keď má rozmery m a n (nie rovnaké). Výhodou jednorozmerného poľa je samozrejme rýchlejší prístup k prvkom, na druhej strane to je ale zhoršuje prehľadnosť programu.
          • Re: dvojrozmerne pole ukazatelov 25.11.2009 | 15:26
            Avatar pison openSUSE 13.1, KDE 4.12.3  Používateľ
            hej hej , uz som zistil, v pohode to funguje, dik