Feil ISO C ++ forbyr array med variabel lengde

Feil ISO C ++ forbyr array med variabel lengde
Arrays med variabel størrelse (VLA) er ikke forbudt i C ++; ISO -feilen er riktig. Runtime-størrelse eller variable matriser er de andre navnene for arrayer med variabel lengde. Størrelsen på disse matriser er satt ved kjøretid. Blant de typene som kan oppdateres er matriser og pekere med variabel lengde til variabel lengde-matriser. Variabelt modifiserte typer skal defineres på enten blokkering eller funksjonsprototypivå. Arrays med variabel lengde er en funksjon som lar oss tildele en bil med variabel størrelse på bunken. I en typedef -uttalelse kan den brukes. Fra C ++ -standarden og fremover aktiverer C-matriser med variabel størrelse. Programmet nedenfor, for eksempel, kompilerer og kjører perfekt i C. void printArray (int n)

int array [n];
// ..

int main ()

PrintArray (8);

Imidlertid støttes ikke arrays med variabel størrelse av C ++ -standarden (til C ++ 11). Array -størrelse er et konstant uttrykk i C ++ 11 -standarden. Som et resultat kan det hende at programmet ovenfor ikke er et akseptabelt C ++ -program. Ettersom GCC -kompilatoren har en utvidelse for å imøtekomme dem, kan programmet fungere med GCC -kompilatoren. Som lite mer er arraystørrelsen nå et enkelt uttrykk i C ++ 14 (ikke konstantuttrykk).

Det er ikke ønskelig å måtte generere et potensielt stort utvalg på en stabel med begrenset plass. Hvis du ikke er klar over på forhånd, vil vi skrive skadelig kode. Arrays med variabel lengde støttes ikke innfødt i C ++ fordi de vil nødvendiggjøre betydelige typer systemendringer.

Her, i C ++ -artikkelen, vil vi vise hvordan vi kan overvinne C ++ ISO Forbidden Lengde-lengde-feilfeil på samlingentiden.

Eksempel 1: Program for å implementere en variabel lengde matrise i C ++ med GCC-kompilator

Arrays med variabel lengde kan velge hvilken som helst størrelse som brukeren ønsker, i.e., De kan være varierende i størrelse. Følgende er et C ++ -program for å lage matriser med variabel lengde:

Vi har C ++ overskriftsfiler i det første trinnet og navnefilen. Etter det har vi programmets hovedmetode, og hovedorganet har pekervariabelen erklæring som "matrise" og den andre variabelen "Arr_size" -erklæring. Cout skriver ut uttalelsen som ber brukeren et nummer for matrise størrelse. Deretter vil CIN ta tallverdien fra brukeren. Variabelen “Array” kalles der vi har satt størrelsen på matrisen.

Nå har vi også bedt om matriseverdiene fra brukeren. Array -verdien vil iterere av for loop til den når matrisstørrelsen. Deretter brukes det andre for loop til å skrive ut verdiene i matrisen, og samtidig har vi slettet matrisen ved å bruke Delete [] -uttrykket i programmet.

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()
int *Array, arr_size;
cout<<"Enter array size: "Arr_size;
Array = new int [arr_size];
cout<<"Enter array values: "<for (int i = 0; i> array [i];
cout<<"Array: ";
for (int i = 0; icout<cout<retur 0;

Skallet viser en melding for å legge inn arraystørrelsen etter samlingen. Når brukeren legger inn størrelsen på matrisen da, ber skallet brukeren om å angi verdiene for matrisen. Størrelsen på matrisen og dens elementer er tilgjengelige som følger. Derfor kan vi implementere en variabel lengde matrise i C ++ uten et forbudt unntak.

Eksempel 2: Program for å implementere en variabel lengde matrise i C ++ ved å bruke vektorer

C ++ STL gir en vektor som et alternativ til matriser med variabel lengde. Det passer for en rekke applikasjoner. Det vil være tydeligere med C ++ -programmet, som vi har implementert nedenfor.

Som vi må bruke vektorer i programmet vårt. Så den viktigste delen er å definere vektoren som en overskriftsfil øverst i kodeimplementeringen. Vi har lagt til vektorfilen i delen av overskriften.

Innenfor programmet har vi en vektorklasse med Type Int, og vektorklassen har en variabel “V.”Vi har lagt til fem elementer av type heltall i vektoren. Etter det har vi en for loop iterasjonssyklus. Inne i for -loopen har vi erklært en iterator til en vektor med en ny variabel “den.”Deretter har" IT "-variabelen en start- og sluttfunksjon for å vise elementene i vektorene.

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()
vektor v;
v.push_back (10);
v.push_back (20);
v.push_back (30);
v.push_back (40);
v.push_back (50);
for (vektor :: iterator it = v.begynne(); den != v.slutt(); det ++)
cout<< *it <
retur 0;

Ovennevnte program gir utdataene slik.

Eksempel 3: Program for å implementere en variabel lengde matrise i C ++ ved å bruke STD :: Vector

Vektorer brukes til å bære sammenlignbare datatyper i C++. Størrelsen på en vektor, i motsetning til matriser, kan vokse dynamisk. Vi kan justere vektorstørrelsen etter behov gjennom hele programutførelsen. Vektoroverskriftsfilen må inkluderes i vårt program for å bruke vektorer. Når vektorbiblioteket er inkludert i overskriftsfilen, kan vi bruke vektor som std :: vektor i programmet.

Etter å ha inkludert vektorbiblioteket øverst, har vi kalt STD :: Vector i programmets hovedfunksjon. Vektoren er deklarert som "tall" og initialisert med de fem tilfeldige numeriske verdiene. Variabelen “tall” er igjen definert, som har tre vektorelementer fra den ovennevnte vektorbeholderen. STD :: cout brukes til å vise lengden på vektoren i variabelen "nummer" ved å bruke størrelsesfunksjonen.

#inkludere
#inkludere
int main ()

std :: vektornumre = 10, 20, 30, 40, 50;
tall = 30, 40, 50;
std :: cout<< "Array Length : " <retur 0;

Utgangen viser lengden på den spesifiserte vektorarrayen som følger.

Konklusjon

Oppsummerer! Her har vi en detaljert diskusjon om matriser med variabel lengde i introduksjonen. Dermed lærte vi at C ++ forbyr matriser med variabel lengde (VLA). Vi har spesifisert noen måter ovenfor for å implementere den variable lengdeoppstillingen i C ++ og alternative måter for variabel-lengde-matrisen. Disse kan være nyttige når du samhandler med de variable lengde-matriser i C++.