std::vector
| Definovno v <vector>
|
||
template< class T, class Allocator = std::allocator<T> > class vector; |
||
std::vector je sekvenn kontejner zapouzdujc dynamick pole (pole s promnnm potem prvk).
Prvky vektoru jsou v pamti uloeny souvisle, jeden za druhm. Krom itertoru me bt k prvku pistupovno i uitm obyejnho ukazatele s offsetem. Ukazatel na prvek vektoru lze pedat kterkoli funkci, kter oekv ukazatel na prvek pole.
Pam vektoru je spravovna automaticky, je zvtovna i zmenovna dle poteby. Vektor zpravidla zabr vce pamti ne obyejn statick pole - je alokovno vce pamti najednou pro budouc rst. Vektor proto nemus realokovat pam kvli kadmu jednotlivmu vkldanmu prvku, ale teprve tehdy kdy je dodaten msto vyerpno. Celkov mnostv alokovan pamti lze zjistit lenskou funkc capacity(). Nevyuit nadbyten pam me bt uvolnna volnm lensk funkce shrink_to_fit().(ponaje C++11)
Realokace pamti je z hlediska vpoetnho vkonu celkem nkladnou operac. Vektor proto umouje rezervovat msto pro prvky dopedu pomoc lensk funkce reserve(). Je-li pedem znma horn mez potu prvk vektoru, lze realokace zcela eliminovat.
Asymptotick asov sloitost bnch operac s vektorem je nsledujc:
- Nhodn pstup k prvkm vektoru - konstantn O(1)
- Pidn nebo odebrn prvk na konci vektoru - amortizovan konstantn O(1)
- Vloen nebo vyjmut prvk v tle vektoru - linern v zvislosti na vzdlenosti od konce vektoru O(n)
std::vector spluje poadavky koncept Container, AllocatorAwareContainer, SequenceContainer a ReversibleContainer.
Parametry ablony
| T | - | Typ prvk.
| ||||
| Allocator | - | Aloktor, kter m bt uvn ke sprv pamti pro prvky. Typ aloktoru mus splovat poadavky konceptu Allocator.
|
Specializace
Standardn knihovna poskytuje specializaci ablony std::vector pro typ bool. Tato specializace je optimalizovna pro ni spotebu pamti.
| prostorov sporn dynamick bitset (Specializace ablony tdy) | |
lensk typy
| lensk typ | Definice |
value_type
|
T
|
allocator_type
|
Allocator
|
size_type
|
Celoseln typ bez znamnka (zpravidla std::size_t) |
difference_type
|
Celoseln typ se znamnkem (zpravidla std::ptrdiff_t) |
reference
|
Allocator::reference (ped C++11)value_type& (ponaje C++11)
|
const_reference
|
Allocator::const_reference (ped C++11)const value_type& (ponaje C++11)
|
pointer
|
Allocator::pointer (ped C++11)std::allocator_traits<Allocator>::pointer (ponaje C++11)
|
const_pointer
|
Allocator::const_pointer (ped C++11)std::allocator_traits<Allocator>::const_pointer (ponaje C++11)
|
iterator
|
RandomAccessIterator
|
const_iterator
|
Konstantn itertor s nhodnm pstupem |
reverse_iterator
|
std::reverse_iterator<iterator>
|
const_reverse_iterator
|
std::reverse_iterator<const_iterator>
|
lensk funkce
zkonstruuje vector (veejn lensk funkce) | |
destruuje vector (veejn lensk funkce) | |
| provede piazen obsahu kontejneru (veejn lensk funkce) | |
| provede piazen obsahu kontejneru (veejn lensk funkce) | |
| vrt pidruen aloktor (veejn lensk funkce) | |
Pstup k prvkm | |
| zpstupn prvek na zadan pozici s kontrolou pekroen mez (veejn lensk funkce) | |
| zpstupn prvek na zadan pozici (veejn lensk funkce) | |
| zpstupn prvn prvek (veejn lensk funkce) | |
| zpstupn posledn prvek (veejn lensk funkce) | |
(C++11) |
pm pstup k vnitnmu poli (veejn lensk funkce) |
Itertory | |
| vrt itertor pro prvn prvek (veejn lensk funkce) | |
| vrt itertor pro posledn prvek (veejn lensk funkce) | |
| vrt reverzn itertor pro prvn prvek (veejn lensk funkce) | |
| vrt reverzn itertor pro posledn prvek (veejn lensk funkce) | |
Kapacita | |
| zjist zda-li je kontejner przdn (veejn lensk funkce) | |
| zjist poet prvk (veejn lensk funkce) | |
| vrt maximln mon poet prvk (veejn lensk funkce) | |
| rezervuje pam pro prvky (veejn lensk funkce) | |
| vrt poet prvk, kolik se vejde do souasnho alokovanho msta (veejn lensk funkce) | |
(C++11) |
pod o uvolnn nevyuit pamti (veejn lensk funkce) |
Zmna obsahu | |
| vyprzdn kontejner (veejn lensk funkce) | |
| vlo prvky (veejn lensk funkce) | |
(C++11) |
vlo, konstruuje prvek pmo v mst vloen (veejn lensk funkce) |
| odstran prvky (veejn lensk funkce) | |
| pid prvek na konec (veejn lensk funkce) | |
(C++11) |
pid, konstruuje prvek pmo na konci vektoru (veejn lensk funkce) |
| odstran posledn prvek (veejn lensk funkce) | |
| penastav poet prvk (veejn lensk funkce) | |
| prohod obsahy (veejn lensk funkce) | |
Nelensk funkce
| porovn dvojici kontejner vector lexikografickm porovnnm prvk (ablona funkce) | |
| specializace algoritmu std::swap (ablona funkce) | |