C ++ stdmake_unique

C ++ stdmake_unique
I denne artikkelen vil vi diskutere en funksjon “make_unique” som leveres av minnebiblioteket. Et minnebibliotek brukes til å definere verktøy for å administrere minnefordelingen og forskjellige oppgaver i minneskuffen. Før vi flytter til emnet vårt, bør vi vite om hva unike pekere er fordi bruken av make_unique -funksjonen også inkluderer de unike pekerne også. En unik peker er en smart peker som har eierskap til en hvilken som helst peker, men som ikke deler den med noen annen peker. Make_unique -funksjonen er den mer effektive måten å initialisere unik_punktet, og den returnerer en unik peker til ethvert objekt som har en spesifisert type. Det ble introdusert i C ++ 14. Når du bruker make_unique -funksjonen for å lage en unik_punkt av array -type, må vi erklære elementene i matrisen separat.

Syntaks:
Følgende er syntaks for Make_unique -pekeren:

mal unikt_ptr make_unique (args);

I syntaksen over "klasse T" er den typen den unike pekeren peker og "args. En annen parameter som noen ganger sendes til denne funksjonen er "størrelse" som brukes til å tildele minneskanten til antall elementer som blir gitt til den. Typen av objektet for make_unique -funksjonen føres i vinkelfester der verdiene som objektpekeren punkter føres til i parentes.

Eksempel # 01:

La oss utføre et eksempel der vi vil opprette et objekt som vil skrive ut meldingen for brukeren i bekreftelsen av om make_unique er vellykket opprettet en unqiue_ptr eller ikke. Nå, inkludert overskriftsfilene, er den første minnet og den andre er Isotream. Minne brukes til å gi verktøyene for å håndtere dynamisk minnetildeling. Iostream brukes til å utføre forskjellige input-output-operasjoner. Etter å ha inkludert overskriftsfilene våre, oppretter vi en klasse som heter "Mkunique". Inne i denne klassen lager vi en funksjon som heter “show ()”. For å håndtere meldingsdisplayet på objektet, ring ved hjelp av make_unique -pekeren.

Show () -metoden vil bli kalt ved hjelp av den unike pekeren som vi har erklært i hovedfunksjonen vår. Nå, videre til hovedfunksjonen der vi initialiserte en unik peker “P” av type og “mkunique” -klasse som vi tildelte en make_unique -medlemsfunksjon av typen “mkunique”. Etter det ved å bruke den pekeren “P”, vil vi kalle Show () -metoden ved hjelp av “->” -operatøren som brukes til å få tilgang til funksjonen til objektklassen ved hjelp av pekere.

#inkludere
#inkludere
klasse Mkunique

offentlig:
void show ()

std :: cout

La oss sjekke utdataene våre der meldingen vises med hell. Dette betyr at vi kan lage en unik peker ved hjelp av make_unique -medlemsfunksjonen.

Eksempel # 02:

Nå skal vi utføre et annet eksempel der vi vil lage en matrise ved hjelp av en smart peker og vil få verdiene som blir passert i den. Etter å ha inkludert overskriftsfilene våre, som det var i eksemplet ovenfor, vil IOostream og Memory Header -filen dykke inn i hovedfunksjonen vår. Vi har erklært en bilpeker “mk_unique”, en bil er en datatype som brukes til å erklære en pekertypevariabel. Til mk_unique tildelte vi "make_unique" medlemsfunksjonen til typen array, der "8" er størrelsen på matrisen. Det betyr at MK_UNIQUE -variabelen nå er en unik peker som vil håndtere spekten av størrelse mindre enn "8".

Neste, ved å bruke for -loopen, skal vi lagre verdiene i vår matrise ved å bruke variabelen “k”. For Loop starter fra “0” og slutter med verdien “7”. Det starter fra 0 til mindre enn 8 til den siste indeksen er oppfylt. Den vil utføre den indre koden med økt 1. Inne. Og deretter ved å bruke "cout" -uttalelsen, viste vi disse verdiene ved å bruke make_unique -pekeren "mk_unique".

#inkludere
#inkludere
int main ()

auto mk_unique = std :: make_unique(8);
for (int k = 0; k < 8; ++k)

mk_unique [k] = k;
std :: cout << mk_unique[k] << std::endl;

Som vist i utdraget nedenfor, trykket verdiene som vi sendte til pekerarrayen verdiene fra 1 til 7 fordi matrisindeksen starter fra 0, så fra 0 til 7 lagrer verdiene som vi passerte ved å bruke for loop fra 1 til 7 til 7. Når sløyfen starter for første gang, vil den sjekke tilstanden om K er mindre enn "8" eller ikke. Deretter utfører den verdien som er lagret i indeksen 0 som er 1. Etter det vil det øke det med 1 og så videre til tilstanden er falsk.

Eksempel # 03:

Nå vil vi prøve en enkel måte å lage en unik peker ved hjelp av make_unique -medlemsfunksjonen. Deretter vil vi skrive ut verdien ved å bruke pekeren som vi skal lage. La oss først inkludere toppfiler og deretter ta turen mot hovedfunksjonen vår der vi har erklært en unik peker som heter "P" av Type -heltall. Dette betyr at den vil holde heltallsverdien. Til den pekeren tildelte vi en make_unique peker av heltallstype som vi passerte verdien “123” som et argument som vil bli lagret i minneskuffen. Til slutt har vi vist verdien som er lagret i minnet ved å bruke “*P”, noe som betyr at den vil vise verdien av den unike pekeren “P”, Asterisk “*” brukes til å få tilgang til pekeren.

#inkludere
#inkludere

STD :: Unique_PTR p = std :: make_unique(123);
std :: cout << *p;

Som vist på figuren nedenfor vises utgangen til koden som er utført ovenfor. Vi viste verdien av den unike pekeren “P” som var “123” uten å ha noen feil.

Konklusjon

I denne guiden har vi forklart metodene for hvordan make_unique -medlemsfunksjonen brukes til å lage en unik_punkt. Make_unique er den mer effektive måten å erklære en peker av en unik type, disse pekerne blir ødelagt når den beveger seg ut av omfanget. Make_unique er den tryggeste måten å lage et midlertidig minneplass i minneskuffen.