C ++ emplace_back

C ++ emplace_back
Metoda C ++ STD :: wektor :: emplace_back () rozszerza wektor, dodając nowy element. Jeśli wymagana jest dodatkowa przestrzeń, ma miejsce realokacja. Po dodaniu lub wycofaniu elementu wektory mają podobną zdolność do tablic dynamicznych do automatycznego zmiany rozmiaru. Pamięć wektorowa jest automatycznie obsługiwana przez kontener. Poza tym, za pomocą funkcji emplace_back (), można dodać element na koniec wektora, śledząc ten, który już tam jest. Ta struktura już istnieje. Śmiałomy kilka przykładów, aby dowiedzieć się więcej o metodzie emplace_back ().

Składnia emplace_back () w c++

Deklaracja STD :: Vector :: emplace_back () z nagłówka STD :: wektor znajduje się w następujący sposób:

# wektor.emplace_back (element);

Parametr to element dodany do wektora. Wyniki są parametrem wstawionym do wektora w ostatnim punkcie. Wyjątek o nazwie BAD_ALLOC jest wydawany, jeśli realokacja się nie powiedzie. Jeśli wyjątek zostanie wyrzucony, nic nie zmieni się z powodu silnej gwarancji wyjątku. Aby uniknąć rzucania błędu, parametr musi być tego samego typu co pojemnik.

Przykład 1:

Użycie funkcji emplace_back () pokazano w poniższym przykładzie:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

VectorVec;
VEC.emplace_back (1);
VEC.emplace_back (2);
VEC.emplace_back (3);
VEC.emplace_back (4);
VEC.emplace_back (5);
dla (auto it = vec.zaczynać(); To != VEC.koniec(); ++ it)
Cout<< " << *it;
powrót 0;

Zaimportowaliśmy moduły do ​​wykorzystania metod i klas w programie. Zacznij od przykładowej funkcji głównej. Utworzyliśmy obiekt jako „VEC” wektorów klasowych z typem danych int. Następnie wywołaliśmy metodę emplace_back () z każdym obiektem wektorowym i wstawiliśmy jeden element wektorowy jako argument w metodzie emplace_back (). Pętla „for” jest następnie używana do wyświetlania komponentów wektorów. W pętli For, mamy automatyczne słowo kluczowe ze zmienną „IT”, które jest ustawione za pomocą metody początkowej. Ustawiamy również jego zmienną z metodą końcową. To iteruje element wektora z operatorem przyrostowym i zwraca elementy w wektorach, jak pokazano na poniższym ekranie wyjściowym:

Przykład 2:

Jak w poprzednim przykładzie, mamy przykład wektora całkowitego, który używa funkcji emplace_back (). Teraz mamy przykład programu wektora stringowego, który zademonstrował użycie funkcji emplace ().

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

vectorvector_item;
wektor_item.emplace_back („hello”);
wektor_item.emplace_back („my”);
wektor_item.emplace_back („geeks”);
wektor_item.emplace_back („to”);
wektor_item.emplace_back („metoda emplace_back”);
dla (auto it = vector_item.zaczynać(); To != wektor_item.koniec(); ++ it)
Cout<< " << *it;
powrót 0;

Po ustawieniu przestrzeni nazw Std stworzyliśmy główną metodę tego konkretnego programu. Wewnątrz ustaliliśmy obiekt klasy wektorowej jako „wektor_item”. Następnie nazwaliśmy ten obiekt „wektor_item” z metodą emplace_back () i wstawiliśmy elementy wektorowe jako argument. Wstawiliśmy wektory stringów w metodzie emplace_back (). Aby wyświetlić te wektory ciągów na ekranie konsoli, wdrożyliśmy metodę pętli „for”. Widać, że wszystkie ciągi wektorowe są generowane w formie poziomej.

Przykład 3:

Przykład wykazujący wektor znaków za pomocą funkcji emplace_back ().

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

VectormyVec;
Myvec.emplace_back („l”);
Myvec.emplace_back („i”);
Myvec.emplace_back ('n');
Myvec.emplace_back („u”);
Myvec.emplace_back ('x');
dla (auto it = myVec.zaczynać(); To != Myvec.koniec(); ++ it)
Cout<< " << *it;
powrót 0;

Stworzyliśmy obiekt wektorowy jako „MYVEC”. Następnie, z obiektem wektorowym „MYVEC”, nazwaliśmy metodę emplace_back (). Za każdym razem wprowadzamy różne znaki do metody emplace_back (). Pętla „for” służy do drukowania wartości znaków z metody emplace_back (). Poniższy ekran pokazuje wartość znaków zwróconą z metody emplace_back ().

Przykład 4:

Użyj funkcji emplace_back (), aby dodać liczby całkowite do pustego wektora, a następnie określić rozmiar powstałego wektora. W tym celu mamy algorytm. Algorytm polega na tym, że musimy użyć funkcji emplace_back (), aby dodać elementy do wektor. Następnie sprawdź, czy rozmiar wektora wynosi 0. Jeśli nie, wsuń element tylny i zwiększ zmienną licznika, która początkowo została zainicjowana do 0. Po zmniejszeniu rozmiar wektora do 0, powtórz tę procedurę. Wyświetl końcową wartość zmiennej.

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

int count = 0;
vectorv;
v.emplace_back (1);
v.emplace_back (2);
v.emplace_back (3);
v.emplace_back (4);
chwila (!v.pusty())
count ++;
v.pop_back ();

Cout<< "count value:" ;
Cout<return 0;

Tam mamy główną metodę tego programu. Mamy zmienną „liczbę”, która jest inicjowana z wartością zero. Następnie mamy obiekt „V” z wektora klasy. Mamy metodę emplace_back (), za pomocą której wstawiliśmy elementy liczb całkowitych. Następnie mamy trochę czasu, która drukuje wartość liczby. Element wektorowy nie może być zerowy, aby pętla pobytu. Następnie liczba jest zwiększana metodą pop_back (). Poniżej znajduje się ekran pokazujący wartość liczby:

Przykład 5:

Push_back () przekształca ciąg w wektor. Nowy obiekt łańcuchowy jest najpierw domyślnie generowany i inicjowany z dostarczonym chargiem*. Oryginalny ciąg jest obiektem tymczasowym, przywołuje się pchnięcie. Skopiuj ten ciąg do wektora z konstruktorem funkcji ruchu. Następnie przejściowy przedmiot jest zniszczony. Z drugiej strony, emplace_back () buduje sznurki na miejscu, nie są tworzone tymczasowe struny; Zamiast tego emplace_back () jest wywoływany bezpośrednio za pomocą parametru char*. Następnie generuje ciąg zapisany w wektorze, który został zainicjowany za pomocą tego char*. W ten sposób unikamy tworzenia i usuwania bezsensownego tymczasowego obiektu ciągów.

#włączać
za pomocą przestrzeni nazw Std;
int main ()

wektormy_vect;
my_vect.emplace_back („x”, 12);
my_vect.push_back (make_pair („y”, 15));
dla (int i = 0; iCout<<powrót 0;

Wewnątrz Int Main oświadczyliśmy, że kolejka wektora priorytetowego jest zadeklarowana jako obiekt „my_vect”. Następnie mamy metodę emplace_back (), która ma wejście pary. Następnie wstawiliśmy wartości pary z metodą push_back (). Zarówno wartości pary z emplace_back () i push_back () są drukowane za pomocą pętli dla. Włożone wartości pary są wykonywane w następującej montorze:

Wniosek

Teraz jest dla ciebie bardzo jasne funkcjonalność metody emplace_back () w c++. Korzyścią jest to, że wykonuje wstawienie na miejscu i zapobiega potrzebom powielania obiektu. Którego używamy, nie ma znaczenia dla prymitywnych typów danych. Jednak użycie emplace () jest zalecane dla obiektów ze względu na jego wydajność. Omówiliśmy wszystkie możliwe przykładowe programy wyjaśniające funkcję emplace_back (). Ponadto różniliśmy się między metodą emplace_back () i metodą push_back () za pomocą programu przykładowego.