przejście do zawartości
zpr c++ quick reference
Narzędzia użytkownika
Zarejestruj się!
Zaloguj
Narzędzia witryny
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
Zarejestruj się!
Ostatnie zmiany
Menadżer multimediów
Indeks
Ślad:
opis_kontenera:vector
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Vector ====== //Autor: Wojciech Grześkowiak//\\ Vector to rodzaj kontenera który trzyma swoje elementy w określonym porządku. Vector zaimplementowano w sposób przypominający dynamicznie zmieniająca się tablice, przez co do jego elementów można odnosić się zarówno poprzez iterator jaki i bezpośrednio podając numer pozycji jaka nas interesuje. Jest on jednak o wiele lepszy od zwykłej tablicy, gdyż może zwiększać swoją pojemność kiedy będzie jej potrzebował.\\ \\ Kontener vector należny używać kiedy: * do poszczególnych elementów chcemy dostawać się poprzez index, * chcemy przeglądać elementy w dowolnej kolejności, * dodajemy i usuwamy elementy jedynie z końca kolekcji. \\ Implementacja vectora w bibliotece standardowej C++ to szablon z dwoma parametrami. template < class T, class Allocator = allocator<T> > class vector; gdzie T to typ elementu jaki będziemy przechowywać, a Allocator definiuje sposob przydzielania pamięci dla nowych elementów. Domyślnie jest on już przydzielony, więc nie musimy się o niego martwić. \\ \\ Przykładowy program ilustrujący zastosowania kontenera można zobaczyć{{:opis_kontenera:vector.cpp|tutaj (vector.cpp)}} ===== Skłdniki ===== Vector udostępnia szereg metod którymi możemy manipulować jego zawartością.\\ |[[vector#Konstruktory]]|Tworzą vector i inicjalizują przekazanymi danymi.| |[[vector#Operatory]]|Opeatory manipulacji vectorem.| |[[vector#assign]]|Dodaje elementy do vectora.| |[[vector#at]]|Zwraca element z podanego miejsca.| |[[vector#back]]|Zwraca referencje do ostatniego elementu.| |[[vector#begin]]|Zwraca iterator wskazujący na pierwszy elementu.| |[[vector#capacity]]|Zwraca liczbę elementów jakie może trzymać vector.| |[[vector#clear]]|Usuwa wszystkie elementy z vectora.| |[[vector#empty]]|Zwraca true jeśli vector jest pusty.| |[[vector#end]]|Zwraca iterator wskazujący za ostatni element.| |[[vector#erase]]|Usuwa dane elementy z vectora.| |[[vector#front]]|Zwraca referencje na pierwszy element.| |[[vector#insert]]|Dodaje elementy do vectora.| |[[vector#max_size]]|Zwraca maksymalną liczbę elementów jakie może trzymać vector.| |[[vector#pop_back]]|Usuwa ostatni element z vectora.| |[[vector#push_back]]|Dodaje element na koniec vectora.| |[[vector#rbegin]]|Zwraca odwrotny iterator wskazujący na koniec vectora.| |[[vector#rend]]|Zwraca odwrotny iterator wskazujący na początek vectora.| |[[vector#reserve]]|Ustawia minimalny rozmiar vectora.| |[[vector#resize]]|Zmienia rozmiar vectora.| |[[vector#size]]|Zwraca liczbę elementów jakie trzyma vector.| |[[vector#swap]]|Wymienia elementy jednego vectora z drugim.| === Konstruktory === Vector posiada następujące konstruktory. <code c++>vector();</code> Domyślny, tworzący nową pustą instancję kontenera. <code c++>vector( const vector& c );</code> Kopiujący, który tworzy nowy wektor ze skopiowanymi elementami od przekazanego. <code c++>vector( size_type num, const TYPE& val = TYPE() );</code> Tworzy vector z podaną ilością elementów (num), o wartości przekazanej w drugim parametrze val, jeśli wartość nie podana, ustalana jest domyślna dla tego typu. <code c++>vector( input_iterator start, input_iterator end );</code> Tworzy vector z elementami z zakresu jaki ustalają przekazane iteratory. === Operatory === Vector posiada następujące operatory. <code c++> TYPE& operator[]( size_type index ); const TYPE& operator[]( size_type index ) const; </code> Operator ten zwraca element znajdujący się pod wskazaną pozycją. <code c++>vector operator=(const vector& c2);</code> Operator przypisania. <code c++> bool operator==(const vector& c1, const vector& c2); bool operator!=(const vector& c1, const vector& c2); bool operator<(const vector& c1, const vector& c2); bool operator>(const vector& c1, const vector& c2); bool operator<=(const vector& c1, const vector& c2); bool operator>=(const vector& c1, const vector& c2); </code> Standardowe operatory porównania. Dwa vectory są równe kiedy: * mają taki sam rozmiar, * każdy element na pozycji ''i'' jednego vectora jest równy elementowi na pozycji ''i'' drugiego vectora. === assign === <code c++> void assign( size_type num, const TYPE& val ); void assign( input_iterator start, input_iterator end ); </code> Metoda ''assign()'' dodaje do vectora: * ''num'' elementów o wartości ''val'', * elementy z zakresu wskazywanego przez iteratory ''start'' oraz ''end''. === at === <code c++> TYPE& at( size_type loc ); const TYPE& at( size_type loc ) const; </code> Funkcja ''at()'' zwraca referencje do elementu znajdującego się pod indexem ''loc''. Jest ona o wiele bezpieczniejsza od operatora ''[]'' ponieważ sprawdza zakres i w razie przekroczenia rzuca wyjątkiem. === back === <code c++> TYPE& back(); const TYPE& back() const; </code> Funckja ''back()'' zwraca referencje do ostatniego elementu w vektorze.\\ Podobne: [[vector#end]] === begin === <code c++> iterator begin(); const_iterator begin() const; </code> Funkcja ''begin()'' zwraca iterator do pierwszego elementu vektora. Wykonywana w stałym czasie.\\ Podobne: [[vector#end]] === capacity === <code c++>size_type capacity() const;</code> Funkcja ''capacity()'' zwraca liczbę elementów jakie może trzymać vector zanim będzie musiał zmienić swój rozmiar.\\ Podobne: [[vector#size]], [[vector#max_size]] === clear === <code c++>void clear();</code> Funkcja ''clear()'' usuwa wszystkie elementy vectora. Wykonywana w czasie liniowym. === empty === <code c++>bool empty() const;</code> Funkcja ''empty()'' zwraca ''true'' jeśli vector jest pusty, ''false'' jeśli nie. === end === <code c++> iterator end(); const_iterator end() const; </code> Funkcja ''end()'' zwraca iterator wskazujący tuż za ostatni element vectora. Taka realizacja ułatwia iterację po elementach.\\ Podobne: [[vector#begin]] === erase === <code c++> iterator erase( iterator loc ); iterator erase( iterator start, iterator end ); </code> Funkcja ''erase()'' usuwa: * element pod indeksem ''loc'' * elementy w zakresie ustalonym przez iteratory ''start'' oraz ''end'' Podobne: [[vector#clear]] === front === <code c++> TYPE& front(); const TYPE& front() const; </code> Funkcja ''front()'' zwraca referencje do pierwszego elementu w vektorze. Uruchamiana w stałym czasie.\\ Podobne: [[vector#back]] === insert === <code c++> iterator insert( iterator loc, const TYPE& val ); void insert( iterator loc, size_type num, const TYPE& val ); void insert( iterator loc, input_iterator start, input_iterator end ); </code> Funkcja ''instert()'' wstawia: * element o wartości ''val'' przed indeks ''loc'' i zwraca iterator na wstawiony element, * ''num'' elementów o wartości ''val'' przed indeks o wartości ''loc'', * elementy z zakresu wzyznaczanego przez iteratory ''start'' i ''end'' przed indeks ''loc''. Przykład: <code c++> vector<int> v1; v1.push_back( 0 ); v1.push_back( 1 ); v1.push_back( 2 ); v1.push_back( 3 ); vector<int> v2; v2.push_back( 5 ); v2.push_back( 6 ); v2.push_back( 7 ); v2.push_back( 8 ); cout << "Przed w v2 są: "; for( int i = 0; i < v2.size(); i++ ) cout << v2[i] << " "; cout << endl; v2.insert( v2.end(), v1.begin(), v1.end() ); cout << "Po w v2 są: "; for( int i = 0; i < v2.size(); i++ ) cout << v2[i] << " "; cout << endl; </code> Wyświetli: Przed w v2 są: 5 6 7 8 Po w v2 są: 5 6 7 8 0 1 2 3 === max_size === <code c++>size_type max_size() const;</code> Funkcja ''max_size()'' zwraca maksymalną liczbę elementów jakie może trzymać vector. Nie mylić z funkcją [[vector#capacity]].\\ Podobne: [[vector#capacity]], [[vector#size]] === pop_back === <code c++>void pop_back();</code> Funkcja ''pop_back()'' usuwa ostatni element z vectora. Uruchamiana w stałym czasie.\\ Podobne: [[vector#push_back]] === push_back === <code c++>void push_back( const TYPE& val );</code> Funkcja ''push_back()'' dodaje element o wartości ''val'' na koniec vektora.\\ Podobne: [[vector#pop_back]] === rbegin === <code c++> reverse_iterator rbegin(); const_reverse_iterator rbegin() const; </code> Funkcja ''rbegin()'' zwraca odwrotny iterator wskazujący na koniec vectora. Uruchamiana w stałym czasie.\\ Podobne: [[vector#rend]] === rend === <code c++> reverse_iterator rend(); const_reverse_iterator rend() const; </code> Funkcja ''rend()'' zwraca odwrotny iterator wskazujący na początek vectora. Uruchamiana w stałym czasie.\\ Podobne: [[vector#rbegin]] === reserve === <code c++>void reserve( size_type size );</code> Funkcja ''reserve()'' ustala rozmiar ([[vector#capacity]]) do co najmniej rozmiaru ''size''. Uruchamiana w stałym czasie. === resize === <code c++>void resize( size_type num, const TYPE& val = TYPE() );</code> Funkcja ''resize()'' zmienia rozmiar ([[vector#size]]) vectora do rozmiaru ''num''. Jeśli wartość ''val'' jest podana, nowo utworzone elementy będą miały właśnie taką wartość. Funkcja uruchamiana w czasie liniowym. === size === <code c++>size_type size() const;</code> Funkcja ''size()'' zwraca liczbę elementów jakie znajdują się w danym vektorze.\\ Podobne: [[vector#capacity]], [[vector#max_size]] === swap === <code c++>void swap( container& from );</code> Funkcja ''swap()'' służy do wymiany elementów między vectorami.\\ Przykład: <code c++> vector<string> v1; v1.push_back("Element w v1"); vector<string> v2; v2.push_back("Element w v2"); v1.swap(v2); cout << "Pierwszy element w v1: " << v1.front() << endl; cout << "Pierwszy element w v2: " << v2.front() << endl; </code> Wyświetli: Pierwszy element w v1: Element w v2 Pierwszy element w v2: Element w v1
opis_kontenera/vector.txt
· ostatnio zmienione: 2008/12/06 16:55 przez
w.grzeskowiak
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Do góry