Kontener typu vector
Stronę tą wyświetlono już: 5119 razy
Kontenery to szablonowe klasy przystosowane do przechowywania zmiennych danego typu. Istnieją różne typy kontenerów, ja omówię jeden z najczęściej wykorzystywanych i najbardziej uniwersalny z nich czyli kontener typu vector. Kontener tego typu jest listą dwukierunkową umożliwiającą dostęp do wszystkich jej elementów oraz usuwanie i dodawanie elementu na dowolnej pozycji. Przykład kodu przechowującego zmienne typu int:
- #include <iostream>
- #include <vector> // biblioteka związana z klasą kontenera vector
- int main(){
- std::vector<int> tInt; // tutaj tworzę kontener typów liczbowych int
- for(int i = 0; i < 10; i++){
- tInt.push_back(i); // tutaj dodaję elementy na końcu listy
- }
- std::cout<<"Lista dodanych elementow do kontenera:"<<std::endl<<std::endl;
- for(int i = 0; i < tInt.size(); // tutaj jest metoda zwracająca liczbę elementów zawartych w kontenerze
- i++){
- std::cout<<"tInt["<<i<<"]="<<tInt[i] // tak można odwoływać się do danego elementu kontenera
- <<std::endl;
- }
- tInt.erase(tInt.begin() + 1); // tutaj usuwam 2-gi element listy tInt.begin() zwraca wskaźnik do pierwszego elementu listy a +1 przesówa wskaźnik o jedną pozycję
- std::cout<<std::endl<<"Lista elementow po usunieciu 2-giego elementu:"<<std::endl<<std::endl;
- for(int i = 0; i < tInt.size(); // tutaj jest metoda zwracająca liczbę elementów zawartych w kontenerze
- i++){
- std::cout<<"tInt["<<i<<"]="<<tInt[i] // tak można odwoływać się do danego elementu kontenera
- <<std::endl;
- }
- tInt.insert(tInt.begin() + 4,10); // dodawanie elementu z wstawieniem go na 5-tej pozycji w kontenerze
- std::cout<<std::endl<<"Lista elementow po dodaniu elementu na piatej pozycji w kontenerze:"<<std::endl<<std::endl;
- for(int i = 0; i < tInt.size(); // tutaj jest metoda zwracająca liczbę elementów zawartych w kontenerze
- i++){
- std::cout<<"tInt["<<i<<"]="<<tInt[i] // tak można odwoływać się do danego elementu kontenera
- <<std::endl;
- }
- tInt.erase(tInt.begin() + 1, tInt.begin() + 4); // usuwanie elementów od 2 do 4 z kontenera
- std::cout<<std::endl<<"Lista elementow po usunieciu elementow od 2-giego do 4-tego:"<<std::endl<<std::endl;
- for(int i = 0; i < tInt.size(); // tutaj jest metoda zwracająca liczbę elementów zawartych w kontenerze
- i++){
- std::cout<<"tInt["<<i<<"]="<<tInt[i] // tak można odwoływać się do danego elementu kontenera
- <<std::endl;
- }
- tInt.clear(); // usuwanie wszystkich elementów kontenera
- if(tInt.empty()){
- std::cout<<std::endl<<"Tablica zostala oprozniona"<<std::endl<<std::endl;
- }
- cout<<"Wcisnij enter, aby zamknac program:";
- cin.get();
- return 0;
- }
Oczywiście nic nie stoi na przeszkodzie, aby kontener przechowywał zmienne złożone takie jak struktury czy obiekty klasy danego typu. Istnieje też inny, szybszy sposób iterowania po elementach kontenera za pomocą iteratorów:
- for(std::vector<int>::iterator i = tInt.begin();// od i = początkowemu wskaźnikowi tablicy
- i < tInt.end(); // mniejszemu od wskaźnika końca tablicy
- i++){
- std::cout<<"tInt["<<int(i - tInt.begin()) // obliczanie numeru indeksu
- <<"]="<<*i // odwołanie do wartości elementu kontenera z poziomu iteratora
- <<std::endl; // wyświetlanie elementów tablicy
- }
Klasa vector udostępnia szereg innych metod z nią związanych, poniżej zamieszczam niektóre z nich:
assign | czyści wektor i kopiuje elementy jego do pustego wektora |
at | Zwraca wskaźnik do elementu na określonej pozycji. |
back | zwraca wskaźnik do ostatniego elementu kontenera; |
begin | zwraca wskaźnik do pierwszego elementu kontenera; |
capacity | zwraca liczbę elementów przechowujących wartość w kontenerze; |
clear | usuwanie wszystkich elementów tablicy; |
empty | sprawdza, czy tablica jest pusta; |
end | zwraca wskaźnik końca tablicy (nie mylić z wskaźnikiem do ostatniego elementu tablicy) |
erase | usuwa jeden określony zakres elementów tablicy |
front | zwraca adres do pierwszego elementu kontenera vector |
insert | dodaje element lub listę elementów w określonym miejscu |
max_size | zwraca maksymalną długość wektora |
pop_back | usuwa końcowy element wektora |
push_back | dodaje element na końcu wektora |
size | zwraca liczbę elementów wektora |
swap | zamienia miejscami elementy wektorów |

Tytuł:
Architektura oprogramowania bez tajemnic. Wykorzystaj język C++ do tworzenia wydajnych aplikacji i systemów
Autor:
Adrian Ostrowski, Piotr Gaczkowski

Tytuł:
Opus magnum C++ 11. Programowanie w języku C++. Wydanie II poprawione (komplet)
Autor:
Jerzy Grębosz

Tytuł:
Programowanie wieloplatformowe z C++ i wxWidgets 3
Autor:
Bartosz W. Warzocha

Tytuł:
Język C++ i przetwarzanie współbieżne w akcji. Wydanie II
Autor:
Anthony Williams

Tytuł:
C++ dla bystrzaków. Wydanie VII
Autor:
Stephen R. Davis

Tytuł:
Tablice informatyczne. Podstawy C++
Autor:
Radosław Sokół

Tytuł:
Opus magnum C++11. Programowanie w języku C++ (komplet)
Autor:
Jerzy Grębosz

Tytuł:
OpenCV 3. Komputerowe rozpoznawanie obrazu w C++ przy użyciu biblioteki OpenCV
Autor:
Adrian Kaehler, Gary Bradski

Tytuł:
C++ w 24 godziny. Wydanie VI
Autor:
Rogers Cadenhead, Jesse Liberty

Tytuł:
C++ Optymalizacja kodu. Sprawdzone techniki zwiększania wydajności
Autor:
Guntheroth Kurt