Palauta matriisi toiminnosta C ++

Return Array From Function C



Taulukot ovat erityisiä säilöjä, joiden arvot ovat samaa tyyppiä. C ++: n toiminnot suorittavat toimintoja matriiseilla, ja nämä taulukot palautetaan sitten päätoimintoon. Tämän ilmiön kuvaamiseen on monia lähestymistapoja. Tässä oppaassa selitetään joitakin yleisiä menetelmiä:

Palauta staattinen taulukko osoittimien avulla

Kun käytämme normaalia matriisia, on mahdollista saada jonkinlaisia ​​epänormaaleja tuloksia. Tämän välttämiseksi käytämme C ++ -koodissamme staattista taulukkoa. Ymmärrämme käyttämämme esimerkin. Tässä funktiossa olemme julistaneet taulukon, jossa on 5 arvoa, palautustyypiksi, kuten tässä mainitaan.







Int *-toiminto ()



Koska arvo on kokonaislukutyyppi, se merkitään int -muodossa alla olevassa esimerkissä. Koska olemme ottaneet toiminnon osoittimeksi, funktio on osoitintyyppi. Arvojen syöttämisen jälkeen taulukko palautetaan pääohjelmaan.







Pääohjelmassa olemme soittaneet toimintokutsun. Funktion palauttaman arvon hyväksymiseen käytämme kokonaislukumuuttujaa. Kun taulukko palautetaan, voimme käyttää sen arvoja helposti. Arvot tulostetaan manuaalisesti.

Int*osoitin=toiminto();

Osoittimen tarkoitus on paikantaa taulukon hakemistossa oleva kohde. Toisin sanoen se näyttää taulukon arvon osoitteen. Käytämme sitten funktion prototyyppiä, joka palauttaa osoittimen.



Nähdäksemme funktion kautta palautetun taulukon tuloksen, meillä on oltava pääsy Ubuntu -päätelaitteeseen Linuxin tapauksessa. Tämä johtuu siitä, että lähtöön on pääsy Linux -päätelaitteen kautta. Linuxissa tarvitsemme kääntäjän suorittamaan C ++ -koodeja, jotka on kirjoitettu mihin tahansa tekstieditoriin. Tämä kokoelma tehdään G ++: n kautta. -O: ta käytetään tulosteen tallentamiseen tiedostoon. Tässä tarvitsemme lähtötiedoston ja lähdekooditiedoston. Suorituksen jälkeen suoritamme koodin:

$g ++ -taitiedosto1 tiedosto1.c
$./tiedosto 1

Lähdöstä näemme, että funktiossa alustettu taulukko näytetään päätoiminnossa käyttämällä staattista taulukkoa, joka alustetaan manuaalisesti ja osoittimien kautta.

Palauta dynaamisesti varattu taulukko osoittimien avulla

Taulukot voidaan palauttaa käyttämällä dynaamista kohdistusta. Taulukot voidaan allokoida dynaamisesti käyttämällä sanaa uusi. Ne pysyvät siellä, kunnes poistamme ne itse. Staattisten matriisien koko on kiinteä, joten sinun on annettava koko alustamisen aikana. Kun taulukko on luotu, kokoa on vaikea lisätä suoritusaikana tai sen jälkeen. Mutta dynaamisen taulukon tapauksessa voimme lisätä lisää kohteita milloin tahansa, koska se laajenee, kun annamme siihen arvoja. Joten meidän ei tarvitse määritellä tai tunnistaa mitään kokoa.

Siirrytään kohti esimerkkiä, jota olemme käyttäneet täällä. Olemme käyttäneet dynaamista taulukkoa osoittimien kanssa kuten edellisissä esimerkeissä, joissa olemme käyttäneet osoittimia staattisten matriisien kanssa.

Int*toiminto()

Toimintoilmoituksen jälkeen taulukot ilmoitetaan dynaamisesti:

Int*matriisi= Uusi int [100];

Termiä uusi käytetään jatkuvasti dynaamisen taulukon luomiseen. Suoritamme matriisin toimintoja syöttämällä siihen arvot. Tämän jälkeen taulukko palautetaan pääohjelmaan:

Mieti nyt päätehtävää. Olemme tehneet funktion kutsun. Kun taulukko palautetaan, lisäämme osoittimen kokonaislukutyyppisen muuttujan arvon hyväksymiseksi.

Int*osoitin=toiminto();

Taulukkoon tallennetut arvot tulostetaan manuaalisesti. Tulos saadaan kääntämis- ja suoritusmenetelmällä.

Paluutaulukko rakenteiden avulla

Rakenteet ovat kontteja, kuten matriiseja. Mutta taulukko sisältää saman tietotyypin arvon kerrallaan. Rakenteissa ne sisältävät useamman kuin yhden tietotyypin arvon. Olemme ottaneet rakenteen nimeltä näyte. Tässä taulukkoilmoitus on rakenteiden sisällä funktioiden sijasta. Palautustyyppi on rakenteen nimi. Rakenne muuttuja palautetaan pääohjelmaan. Rakenne käyttää sanaa struktuuri ilmoituksessa.

Rakenne näyte
{
Sis. Saap[100];
};

Rakenneilmoituksen jälkeen olemme käyttäneet funktiota, jossa luodaan rakenneobjekti. Tätä objektia käytetään pääsemään rakenteeseen. Tämä toiminto palauttaa rakenneobjektin päätoimintoon, jotta voimme tulostaa taulukon tämän objektin kautta. Muuttuja saa muuttujan arvot. Tämä arvo on kokonaisluku, johon asti syötämme arvot taulukkoon. Kuten tässä esimerkissä, olemme valinneet numeroksi 6. Joten numeroita syötetään enintään 6 taulukkoon.

Rakennenäytetoiminto(intn)

Siirryttäessä kohti pääohjelmaa olemme luoneet objektin pääsemään taulukkoon tämän kautta:

Rakenne näyte x;

Objektin alustuksen jälkeen muuttujaan lisätään arvo, johon haluamme numeroiden syöttävän matriisin. Toimintokutsussa välitämme parametrin arvon:

X=toiminto(n);

Saamme näytön käyttämällä for -silmukkaa. Arvot näytetään pääohjelman alussa ilmoitetun objektin kautta:

Tulos osoittaa, että tuloksessa näkyy 6 arvoa, kun ohjelmaan on syötetty 6 numeroa.

Palauta matriisi käyttämällä vakio

C ++ käyttää monia menetelmiä palauttaakseen taulukon funktiosta. Yksi niistä on std :: array. Se on rakenteen malli. Tämä ominaisuus tarjoaa myös kaksi muuta toimintoa, jotka ovat koko () ja tyhjä (). Taulukon nimi palautetaan, mikä osoittaa, että koko ryhmä palautetaan pääohjelmalle. Tässä lisätään otsikkotiedostot. Kirjaston lisäksi se sisältää kaikki taulukon toiminnot.

#sisältää

matriisi<int,10>toiminto()

Koska voimme palauttaa koko taulukon sen nimen kanssa, käytämme funktion ilmoituksessa matriisia palautustyypinä. Tiedot syötetään taulukkoon. Tämän jälkeen taulukko palautetaan pääohjelmaan. Siirtymällä päätoimintoon matriisimuuttuja hyväksyy taulukon, kun funktio kutsutaan.

arr=toiminto();

Jälleen silmukkaa käytetään taulukkoarvojen näyttämiseen. Tarkkailemme alla olevan kuvan tulosta. Koska olemme käyttäneet 10 kokoa, 0 numeroa syötetään. Siksi nämä näytetään:

Palauta matriisi vektorisäiliön kautta

Tämä lähestymistapa on dynaamisesti varattu ryhmä. Kuten tässä tapauksessa, taulukon kokoa ei tarvitse määrittää. Emme tarvitse tässä kokoparametreja. Tätä esimerkkiä käyttämällä meidän on lisättävä kirjastoon vektoriotsikko, joka sisältää vektorin toiminnot.

Siirtyminen kohti funktiota, jossa palautustyyppi on myös int -vektori ja sisältää myös vektorin osoittimen argumenttina parametrissa. Tässä esitetään taulukko, jonka nimi on temp:

Vektori<int>MultiplyArrayByTwo(constvektori<int> *arr)

Funktio kertoo taulukon elementit kahdella käyttämällä tmp.push_back () -funktiota. Palauta sitten tmp. Automaattityyppinen muuttuja hyväksyy funktion matriisin arvot. Taulukko sisältää siinä olevat kohteet.

Tulos näyttää vektorisäiliön toiminnan.

Johtopäätös

Edellä mainitussa artikkelissa olemme kuvanneet viisi yleisimmin käytettyä menetelmää, jotka selittävät funktion matriisin palauttamisen toiminnallisuuden.