Vectory - tutorial.
ExBiT
10.11.2011
Witam.
Na wstępie powiem, że jest to mój pierwszy poradnik na tym forum, więc " DO NOT BE TOO CRUDE".
Vectory - cóż to takiego? Otóż wektor reprezentuje zwykłą tablicę. Jest on jednak wyposażony w kilka dodatkowych funkcji ułatwiających nam jego mordernizację i dynamiczne zarządzanie.
1. Tworzenie.
Inicjacja wektorów w c++ jest dość prosta i działa według argumentacji:
Jako typ oznaczamy standardowe zmienne w c++. Może to być zmienna zmiennoprzecinkowa, całkowita, bądź też tekstowa.
W owym poradniku vectory podzielimy na 3 części (nazewnictwo własne):
a) puste,
B) optymalizujące,
c) optymalizująco-wartościowe.
Żaden z tych typów nie ma wielkiej rozbierzności w ogólnej deklaracji.
Wyżej przedstawione wektory tworzymy w następujący sposób(do opisu ich działania przejdziemy niżej):
a) vector <typ> nazwa;
B) vector <typ> nazwa(wielkość_tablicy);
c) vector <typ> nazwa(wielkosc_tablicy, wartosc_liczbowa_bądź_tekstowa_przyjmowana_przez_każdy_element);
- Wektor pusty nie ogranicza nas objętościowo. Możemy wrzucić do niego tyle elementów, ile nam jest do szczęścia potrzebne.
- Wektor optymalizujący podobnie jak ten opisany wyżej nie nakłada na nas jakichś zakazów działania na tablicach. Jego deklaracji jednakże używamy w szczególnych przypadkach, np. gdy chcemy od razu zarezerwować pewną ilość pamięci.
- Działanie tablicy optymalizująco-wartościowej jest również podobne do poprzedników. Jednakże deklarując wartość odwołujemy się do każdego elementu w tablicy. Jako przykład damy prosty vector, a niżej opiszemy jego działanie dokładniej:
Przy takej deklaracji, każdy z 99 elementów vectora będzie posiadał już z góry ustaloną wartość - 9.
Ciekawie jest, jeżeli za typ podamy zmienną tekstową. Wtedy element posiadał będzie ustaloną wartość w postaci tekstu. Przykład:
2. Dynamiczne zarządzanie wektorem.
Jak już się możnabyło przekonać, wektory nie tylko są wygodne w użyciu, ale także możemy łatwo nimi "manipulować". Mówiąc "manipulować" mam na myśli łatwe zarządzanie danymi w nim umieszczonymi, lecz nie tylko. Każda funkcja wymaga od nas również odpowiedniej składni:
a) Dodawanie elementów.
Vector daje nam możliwość wyboru fukncji, z której chcemy korzystać. Mamy je 2, ale to już zawsze coś.
Pierwsza, czyli ta, od której zaczniemy to
Daje nam on niestety możliwość dodawania elementów do wektora na sam koniec. Mimo tego jest on dość często używany, w szególnośći przy wypełnianiu tzw. pustych wektorów, o których już wcześniej była mowa. Bardzo dobrze komponuje się z pętlą for. Jeżeli komuś bardziej podoba się ta metoda, to odsyłam do dokumentacji - vector::push_back - C++ Reference
Drugą opcją przy dodawaniu elementów jest metoda insert - vector::insert - C++ Reference Ta jest zdecydowanie częściej stosowana, gdyż pozwala ona nam na swobodne operowanie umiejscowieniem i ilością dodanych elementów.
B) Usuwanie elementów.
Na wymazywanie(eng. erase) elementów położonych w wektorze pozwala nam funkcja:
Jest ona łatwa w obsłudze, gdyż może przyjmować 2 lub 1 argument. Zastosowanie jedno-argumentowe tej funkcji polega na przekazaniu erase lokacji/położenia elementu. Natomiast drugi sposób umożliwia usuwanie z przedziału od a do b.
Oczywiście wektory mają jeszcze więcej bardzo ciekawych zastosowań, lecz ja starałem się wymienić tylko te najważniejsze. Dla bardziej zainteresowanych umieszam dokumentację - vector - C++ Reference Stronka świetnie oddaje możliwośći wektorów wraz z przykładami.
Myślę już , że przy pojedynku tablica versus wektor, wybierzecie ten drugi ;]
Pozdrawiam, ExBiT
Użytkownik DarkGL edytował ten post 11.11.2011 10:53
Na wstępie powiem, że jest to mój pierwszy poradnik na tym forum, więc " DO NOT BE TOO CRUDE".
Vectory - cóż to takiego? Otóż wektor reprezentuje zwykłą tablicę. Jest on jednak wyposażony w kilka dodatkowych funkcji ułatwiających nam jego mordernizację i dynamiczne zarządzanie.
1. Tworzenie.
Inicjacja wektorów w c++ jest dość prosta i działa według argumentacji:
vector <typ> nazwa;
Jako typ oznaczamy standardowe zmienne w c++. Może to być zmienna zmiennoprzecinkowa, całkowita, bądź też tekstowa.
W owym poradniku vectory podzielimy na 3 części (nazewnictwo własne):
a) puste,
B) optymalizujące,
c) optymalizująco-wartościowe.
Żaden z tych typów nie ma wielkiej rozbierzności w ogólnej deklaracji.
Wyżej przedstawione wektory tworzymy w następujący sposób(do opisu ich działania przejdziemy niżej):
a) vector <typ> nazwa;
B) vector <typ> nazwa(wielkość_tablicy);
c) vector <typ> nazwa(wielkosc_tablicy, wartosc_liczbowa_bądź_tekstowa_przyjmowana_przez_każdy_element);
- Wektor pusty nie ogranicza nas objętościowo. Możemy wrzucić do niego tyle elementów, ile nam jest do szczęścia potrzebne.
- Wektor optymalizujący podobnie jak ten opisany wyżej nie nakłada na nas jakichś zakazów działania na tablicach. Jego deklaracji jednakże używamy w szczególnych przypadkach, np. gdy chcemy od razu zarezerwować pewną ilość pamięci.
- Działanie tablicy optymalizująco-wartościowej jest również podobne do poprzedników. Jednakże deklarując wartość odwołujemy się do każdego elementu w tablicy. Jako przykład damy prosty vector, a niżej opiszemy jego działanie dokładniej:
vector <int> tab(99, 9);
Przy takej deklaracji, każdy z 99 elementów vectora będzie posiadał już z góry ustaloną wartość - 9.
Ciekawie jest, jeżeli za typ podamy zmienną tekstową. Wtedy element posiadał będzie ustaloną wartość w postaci tekstu. Przykład:
vector <string> tab(99, "Pozdrawiam amxx.pl");
2. Dynamiczne zarządzanie wektorem.
Jak już się możnabyło przekonać, wektory nie tylko są wygodne w użyciu, ale także możemy łatwo nimi "manipulować". Mówiąc "manipulować" mam na myśli łatwe zarządzanie danymi w nim umieszczonymi, lecz nie tylko. Każda funkcja wymaga od nas również odpowiedniej składni:
nazwa_wektora.funkcja();
a) Dodawanie elementów.
Vector daje nam możliwość wyboru fukncji, z której chcemy korzystać. Mamy je 2, ale to już zawsze coś.
Pierwsza, czyli ta, od której zaczniemy to
push_back();
Daje nam on niestety możliwość dodawania elementów do wektora na sam koniec. Mimo tego jest on dość często używany, w szególnośći przy wypełnianiu tzw. pustych wektorów, o których już wcześniej była mowa. Bardzo dobrze komponuje się z pętlą for. Jeżeli komuś bardziej podoba się ta metoda, to odsyłam do dokumentacji - vector::push_back - C++ Reference
Drugą opcją przy dodawaniu elementów jest metoda insert - vector::insert - C++ Reference Ta jest zdecydowanie częściej stosowana, gdyż pozwala ona nam na swobodne operowanie umiejscowieniem i ilością dodanych elementów.
B) Usuwanie elementów.
Na wymazywanie(eng. erase) elementów położonych w wektorze pozwala nam funkcja:
erase();
Jest ona łatwa w obsłudze, gdyż może przyjmować 2 lub 1 argument. Zastosowanie jedno-argumentowe tej funkcji polega na przekazaniu erase lokacji/położenia elementu. Natomiast drugi sposób umożliwia usuwanie z przedziału od a do b.
Oczywiście wektory mają jeszcze więcej bardzo ciekawych zastosowań, lecz ja starałem się wymienić tylko te najważniejsze. Dla bardziej zainteresowanych umieszam dokumentację - vector - C++ Reference Stronka świetnie oddaje możliwośći wektorów wraz z przykładami.
Myślę już , że przy pojedynku tablica versus wektor, wybierzecie ten drugi ;]
Pozdrawiam, ExBiT
Użytkownik DarkGL edytował ten post 11.11.2011 10:53