Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
C++

Vectory - tutorial.

C++

  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 ExBiT

    Pomocny

  • Użytkownik

Reputacja: 39
Życzliwy

  • Postów:65
  • Imię:Brainf*ck
  • Lokalizacja:Warszawa
Offline

Napisano 10.11.2011 16:55

*
Popularny

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:

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

  • +
  • -
  • 5
Projekty na zamówienie w technologii:
- C++,
- Java,
- Pawn.

100% zadowolenia. Kontakt - PW.

#2 Zapalka

    Wszechwidzący

  • Użytkownik

Reputacja: 194
Profesjonalista

  • Postów:283
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Janów Lubelski
Offline

Napisano 10.11.2011 17:31

Poradnik przydatny, dość dobrze opisane.

Oczywiście + dla ciebie :)
  • +
  • -
  • 0
Zapraszam na http://zapalka.net.pl

#3 KoZaK_Pl

    Pomocny

  • Użytkownik

Reputacja: 7
Nowy

  • Postów:42
  • Imię:Damian
  • Lokalizacja:Warszawa
Offline

Napisano 11.11.2011 10:50

Ciekawy tutorial, dobrze napisany. + leci
  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: C++

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych