Aby kodować wektor w C ++, biblioteka wektorowa musi być uwzględniona w programie. Biblioteka wektorowa ma klasę wektorową, z której można utworzyć obiekty wektorowe (utworzyć).
Program, w którym wszystkie próbki kodu tego artykułu zaczynają się od:
#włączaćStosuje się wektor ciągów.
Treść artykułu
- Zwracanie wektora według normalnej nazwy wektora
- Zwracanie dosłownego wektora
- Zwracanie odniesienia wektorowego
- Zwracanie wskaźnika wektorowego
- Wniosek
Zwracanie wektora według normalnej nazwy wektora
Niech wektor zainteresowania będzie:
wektorWektor to lista przedmiotów w małym sklepie spożywczym. Nazwa, magazyn tego wektora, należy wysłać jako argument do funkcji, której parametr jest wektor, ale z nazwą VTR. Funkcja zainteresowania może być:
wektorZwróć uwagę na typ zwrotu definicji funkcji. Nazwa wektora to sklep. To jest argument dotyczący wywołania funkcji. Parametr funkcji odpowiadającej wektorowi jest:
wektorZauważ, że argument funkcji i nazwy parametru są różne (nadal mogą być takie same). Gdy tylko funkcja rozpocznie się wykonywanie, składa się następującą instrukcję:
wektorTo stwierdzenie jest równoważne z następującymi dwoma stwierdzeniami:
wektorI tak, VTR to kopia wektora, sklepu. W tym momencie istnieją dwa wektory z tą samą treścią w pamięci dla programu. Odpowiednią główną funkcją C ++ dla kodu może być:
int main ()Zwróć uwagę, że Słowna sklep jest argumentem wywołania funkcji. Gdy funkcja jest wywoływana, w pamięci występują dwie kopie tej samej zawartości wektora. Funkcja (wywołanie) zwraca wektor, który jest odbierany przez inny wektor, v. Do czasu zakończenia programu istnieją trzy wektory tej samej kopii w pamięci. Te trzy kopie tej samej zawartości można zmniejszyć do jednej kopii za pomocą wektora odniesienia lub wektora wskaźnika. Dane wyjściowe dla powyższego programu to:
chleb, mięso, ryż, sos pomidorowy, ser,
Zwracanie dosłownego wektora
Dzisiaj (w 2022 r.) Literał wektorowy jest taki sam jak literał tablicy. Ten literał nazywa się listą inicitizer_list, dziś w c++. Zwracanie literatu wektorowego przez funkcję jest takie samo, jak zwrócenie listy inicjalizatora. Niech initLializer_List będzie:
„Chleb”, „Mięso”, „Rice”, „Sos pomidorowy”, „Cheese”Niech definicja funkcji zwróci inicitizer_list,
wektorLista inicjalizator jest składana na miejscu w instrukcji powrotnej i zwrócona. Definicja funkcji nie ma parametru, ale ma ten sam typ zwrotu co jej odpowiednik w poprzednim rozdziale. Niech główna funkcja C ++ będzie:
int main ()Wzywanie funkcji, tym razem, nie ma argumentu, ale wartość zwracania jest odbierana przez ten sam wektor i rodzaj poprzedniej sekcji.
Do czasu zakończenia programu byłyby dwa kopie tego samego wektora w pamięci? NIE. Byłaby tylko jedna kopia, czyli v. Lista inicjalizator jest rodzajem wyrażenia, zwanego RValue. Gdy tego rodzaju wyrażenie nie jest już potrzebne w pamięci, można go usunąć przez C ++, aby mieć więcej miejsca na pamięć? Nie jest ważne, czy pozostaje w pamięci po jego użyciu, gdy program nadal działa. Zostałby wymazany, gdyby jego przestrzeń jest potrzebna. Wyjście programu to:
chleb, mięso, ryż, sos pomidorowy, ser,
Zwracanie odniesienia wektorowego
Program zrobi to, co zrobił pierwszy powyższy program, ale tylko z jedną kopią tego samego wektora. Będą jednak trzy różne nazwy tego samego wektora. Niech wektor zainteresowania będzie:
wektorZwróć uwagę na obecność i pozycję parametru i w parametrze. Oznacza to, że VTR jest wektorem odwołanym (synonimowym), a nie kopią argumentu, który ma zostać wysłany. Zwróć uwagę na obecność i pozycję i w typu powrotu. Oznacza to, że odniesienie (synonim) wektora zostanie zwrócone przez funkcję. Zauważ, że wewnętrzne stwierdzenie „powrót VTR;” nie ma &. Niech główna funkcja C ++ będzie:
int main ()Podpis definicji funkcji i instrukcja wywołania funkcji to:
wektorI
wektorodpowiednio. Zwróć uwagę, obecność i pozycja i, w typu powrotu definicji funkcji. Zwróć uwagę na obecność i pozycję i w instrukcji wywołania funkcji. Argumentem wywołania funkcji jest zwykła nazwa wektora, sklep. Funkcja zwraca odniesienie i jest odbierana przez wskaźnik, v.
I tak w programie są trzy różne zmienne, wszystkie odnoszące się do tej samej lokalizacji pamięci wektorowej (funkcja zwrócona i VTR, która jest synonimem sklepu). Wyjście to:
chleb, mięso, ryż, sos pomidorowy, ser,Zwracanie wskaźnika wektorowego
Program zrobi to, co zrobił pierwszy powyższy program, ale tylko z jedną kopią tego samego wektora. Będą trzy różne nazwy tego samego wektora. Niech wektor zainteresowania będzie:
wektorZwróć uwagę na obecność i pozycję * w parametrze. Oznacza to, że VTR jest wektorem wskaźnikiem, a nie kopią żadnego argumentu wektora, który ma zostać wysłany. Zwróć uwagę na obecność i pozycję * w typu powrotu. Ponownie zauważ, że wewnętrzne stwierdzenie „zwróć vtr;” nie ma i lub *. Niech główna funkcja C ++ będzie:
int main ()Podpis definicji funkcji i instrukcja wywołania funkcji to:
wektorI
wektorodpowiednio. Zwróć uwagę na obecność i pozycję * w typu zwrotnym definicji funkcji. Zwróć uwagę na obecność i pozycję i w instrukcji wywołania funkcji; Jest przed argumentem, sklepem, a nie przed fn (), który nie ma i lub *. Funkcja zwraca odniesienie i jest odbierana przez wskaźnik, v.
I tak w programie są trzy różne zmienne, wszystkie odnoszące się do tej samej lokalizacji pamięci wektorowej. Wyjście to:
chleb, mięso, ryż, sos pomidorowy, ser,Wniosek
Funkcja może zwrócić wektor po swojej normalnej nazwie. Funkcja może zwrócić literał wektorowy (inicjalizator_list), który zostanie odebrany przez normalny wektor (nazwa). Wektor może zwrócić odniesienie wektorowe, które zostanie odebrane przez wskaźnik wektorowy. Wektor może zwrócić wskaźnik wektorowy, który jest jeszcze odbierany przez inny wskaźnik wektorowy.