C ++ stdmake_unique

C ++ stdmake_unique
W tym artykule będziemy omawiać funkcję „make_unique”, która jest dostarczana przez bibliotekę pamięci. Biblioteka pamięci służy do definiowania narzędzi do zarządzania alokacją pamięci i różnymi zadaniami w stosie pamięci. Przed przejściem do naszego tematu powinniśmy wiedzieć o tym, jakie są unikalne wskaźniki, ponieważ użycie funkcji Make_Unique zawiera również unikalne wskazówki. Unikalny wskaźnik to inteligentny wskaźnik, który ma własność dowolnego wskaźnika, ale nie dzieli go z żadnym innym wskaźnikiem. Funkcja Make_Unique jest bardziej wydajnym sposobem inicjowania unikalnego_pointera i zwraca unikalny wskaźnik do dowolnego obiektu, który ma określony typ. Został wprowadzony w C ++ 14. Podczas korzystania z funkcji Make_Unique do utworzenia unikalnego_pointera typu tablicy, musimy zadeklarować elementy tablicy osobno.

Składnia:
Poniżej znajduje się składnia wskaźnika Make_Unique:

szablon unikalny_ptr make_unique (args);

W powyższej składni „Klasa T” jest typem, na który wskazuje unikalny wskaźnik, a „args” oznacza argument, który ma zostać przekazany konstruktorowi dowolnego obiektu. Kolejnym parametrem, który jest czasem przekazywany do tej funkcji, jest „rozmiar”, który służy do alokacji sterty pamięci do liczby elementów, które są do niej przekazywane. Typ obiektu funkcji Make_Unique jest przekazywany w nawiasach kątowych, w których wartości, do których punkty wskaźnika obiektu są przekazywane w nawiasach.

Przykład nr 01:

Wykonajmy przykład, w którym utworzymy obiekt, który wydrukuje komunikat dla użytkownika w potwierdzeniu, czy Make_Unique jest pomyślnie utworzona UNQIUE_PTR. Teraz, w tym pliki nagłówka, pierwsza to pamięć, a druga to izotream. Pamięć jest używana do dostarczania narzędzi do zarządzania dynamicznym alokacją pamięci. Iostream służy do wykonywania różnych operacji wejściowych. Po włączeniu plików nagłówka utworzymy klasę o nazwie „MKUNIQUE”. W tej klasie tworzymy funkcję o nazwie „show ()”. W celu obsługi wyświetlacza wiadomości w obiekcie zadzwoń za pomocą wskaźnika Make_Unique.

Metoda show () zostanie wywołana przy użyciu unikalnego wskaźnika, który zadeklarowaliśmy w naszej głównej funkcji. Teraz, przechodząc do głównej funkcji, w której zainicjowaliśmy unikalny wskaźnik „P” typu i klasy „mkunique”, do której przypisaliśmy funkcję członka Make_Unique typu „Mkunique”. Po tym za pomocą tego wskaźnika „P” wywołamy metodę show () za pomocą operatora „->”, który służy do dostępu do funkcji klasy obiektowej za pomocą wskazówek.

#włączać
#włączać
Klasa Mkunique

publiczny:
void show ()

STD :: Cout

Sprawdźmy nasze dane wyjściowe, w którym komunikat jest pomyślnie wyświetlany. Oznacza to, że możemy utworzyć unikalny wskaźnik za pomocą funkcji członka Make_Unique.

Przykład nr 02:

Teraz będziemy wykonywać kolejny przykład, w którym utworzymy tablicę za pomocą inteligentnego wskaźnika i otrzymamy wartości, które są w nim przekazane. Po włączeniu plików nagłówka, podobnie jak w powyższym przykładzie, iostream i plik nagłówka pamięci będziemy zanurzyć się w naszej głównej funkcji. Zadeklarowaliśmy wskaźnik automatycznego „MK_Unique”, automatyczne jest typ danych używany do deklarowania zmiennej typu wskaźnika. Do mk_unique przypisaliśmy funkcję członka „make_unique” tablicy typu, w której „8” to rozmiar tablicy. Oznacza to, że zmienna MK_Unique jest teraz unikalnym wskaźnikiem, który będzie obsługiwał szereg wielkości mniej niż „8”.

Następnie, korzystając z pętli, zamierzamy przechowywać wartości w naszej tablicy za pomocą zmiennej „k”. Pętla zaczyna się od „0”, a kończy na wartości „7”. Rozpocznie się od 0 do mniej niż 8, aż do spełnienia ostatniego indeksu. Wykonuje wewnętrzny kod z przyrostem 1. Wewnątrz pętli For przypisaliśmy „K” do wskaźnika, który będzie przechowywał wartości w stosie pamięci. A następnie za pomocą instrukcji „Cout” wyświetliśmy te wartości za pomocą wskaźnika Make_Unique „MK_Unique”.

#włączać
#włączać
int main ()

auto mk_unique = std :: Make_unique(8);
dla (int k = 0; k < 8; ++k)

mk_unique [k] = k;
STD :: Cout << mk_unique[k] << std::endl;

Jak pokazano w fragmencie poniżej, wartości, które przekazaliśmy do tablicy wskaźnika, wydrukowały wartości od 1 do 7, ponieważ wskaźnik tablicy zaczyna się od 0, więc od 0 do 7 przechowuje wartości, które za pomocą pętli FOR wynoszą od 1 do 7. Kiedy pętla rozpocznie się po raz pierwszy, sprawdzi warunek, czy k jest mniejszy niż „8”, czy nie. Następnie wykonuje wartość przechowywaną w indeksie 0, która wynosi 1. Następnie zwiększy go o 1 i tak dalej, aż warunek będzie fałszywy.

Przykład nr 03:

Teraz spróbujemy prostego sposobu utworzenia unikalnego wskaźnika za pomocą funkcji członka Make_Unique. Następnie wydrukujemy wartość za pomocą wskaźnika, który będziemy tworzyć. Najpierw dołączmy pliki nagłówków, a następnie skieruj się w kierunku naszej głównej funkcji, w której zadeklarowaliśmy unikalny wskaźnik o nazwie „P” typu liczb całkowitych. Oznacza to, że będzie utrzymywał wartość typu liczb całkowitych. Do tego wskaźnika przypisaliśmy wskaźnik Make_Unique typu liczb całkowitych, do którego przekazaliśmy wartość „123” jako argument, który będzie przechowywany w stosie pamięci. Ostatecznie wyświetliśmy wartość zapisaną w pamięci za pomocą „*p”, co oznacza, że ​​będzie wyświetlać wartość unikalnego wskaźnika „P”, Asterisk „*” służy do uzyskania dostępu do wskaźnika.

#włączać
#włączać

STD :: unikalne_ptr p = std :: Make_Unique(123);
STD :: Cout << *p;

Jak pokazano na rysunku poniżej, wyświetlane jest wyjście wykonywanego kodu. Wyświetliliśmy wartość unikalnego wskaźnika „P”, który był „123” bez żadnego błędu.

Wniosek

W tym przewodniku wyjaśniliśmy metody sposobu, w jaki funkcja członka Make_Unique jest używana do utworzenia unikalnego_pointera. Make_Unique to bardziej skuteczny sposób na ogłoszenie wskaźnika unikalnego typu, wskaźniki te są niszczone za każdym razem, gdy wychodzi z zakresu. Make_Unique to najbezpieczniejszy sposób na utworzenie tymczasowej lokalizacji pamięci w stosie pamięci.