Jmenné prostory
Varianty
Akce

std::vector

Z cppreference.com
< cpp
Definováno v <vector>
template<

    class T,
    class Allocator = std::allocator<T>

> class vector;

std::vector je sekvenční kontejner zapouzdřující dynamické pole (pole s proměnným počtem prvků).

Prvky vektoru jsou v paměti uloženy souvisle, jeden za druhým. Krom iterátoru může být k prvku přistupováno i užitím obyčejného ukazatele s offsetem. Ukazatel na prvek vektoru lze předat kterékoli funkci, která očekává ukazatel na prvek pole.

Paměť vektoru je spravována automaticky, je zvětšována či zmenšována dle potřeby. Vektor zpravidla zabírá více paměti než obyčejné statické pole - je alokováno více paměti najednou pro budoucí růst. Vektor proto nemusí realokovat paměť kvůli každému jednotlivému vkládanému prvku, ale teprve tehdy když je dodatečné místo vyčerpáno. Celkové množství alokované paměti lze zjistit členskou funkcí capacity(). Nevyužitá nadbytečná paměť může být uvolněna voláním členské funkce shrink_to_fit().(počínaje C++11)

Realokace paměti je z hlediska výpočetního výkonu celkem nákladnou operací. Vektor proto umožňuje rezervovat místo pro prvky dopředu pomocí členské funkce reserve(). Je-li předem známa horní mez počtu prvků vektoru, lze realokace zcela eliminovat.

Asymptotická časová složitost běžných operací s vektorem je následující:

  • Náhodný přístup k prvkům vektoru - konstantní O(1)
  • Přidání nebo odebrání prvků na konci vektoru - amortizovaně konstantní O(1)
  • Vložení nebo vyjmutí prvků v těle vektoru - lineární v závislosti na vzdálenosti od konce vektoru O(n)

std::vector splňuje požadavky konceptů Container, AllocatorAwareContainer, SequenceContainer a ReversibleContainer.

Obsah

[editovat] Parametry šablony

T - Typ prvků.
T musí splňovat požadavky konceptů CopyAssignable a CopyConstructible. (před C++11)
Které požadavky jsou na prvky kladeny závisí na prováděné operaci. Obecně je vyžadováno aby typ prvku splňoval požadavky konceptů MoveConstructible a MoveAssignable. Mnoho členských funkcí má přísnější požadavky. (počínaje C++11)

[edit]

Allocator - Alokátor, který má být užíván ke správě paměti pro prvky. Typ alokátoru musí splňovat požadavky konceptu Allocator. [edit]

[editovat] Specializace

Standardní knihovna poskytuje specializaci šablony std::vector pro typ bool. Tato specializace je optimalizována pro nižší spotřebu paměti.

prostorově úsporný dynamický bitset
(Specializace šablony třídy) [edit]

[editovat] Členské typy

Členský typ Definice
value_type T [edit]
allocator_type Allocator [edit]
size_type Celočíselný typ bez znaménka (zpravidla std::size_t) [edit]
difference_type Celočíselný typ se znaménkem (zpravidla std::ptrdiff_t) [edit]
reference Allocator::reference (před C++11)
value_type& (počínaje C++11) [edit]
const_reference Allocator::const_reference (před C++11)
const value_type& (počínaje C++11) [edit]
pointer Allocator::pointer (před C++11)
std::allocator_traits<Allocator>::pointer (počínaje C++11) [edit]
const_pointer Allocator::const_pointer (před C++11)
std::allocator_traits<Allocator>::const_pointer (počínaje C++11) [edit]
iterator RandomAccessIterator [edit]
const_iterator Konstantní iterátor s náhodným přístupem [edit]
reverse_iterator std::reverse_iterator<iterator> [edit]
const_reverse_iterator std::reverse_iterator<const_iterator> [edit]

[editovat] Členské funkce

zkonstruuje vector
(veřejná členská funkce) [edit]
destruuje vector
(veřejná členská funkce) [edit]
provede přiřazení obsahu kontejneru
(veřejná členská funkce) [edit]
provede přiřazení obsahu kontejneru
(veřejná členská funkce) [edit]
vrátí přidružený alokátor
(veřejná členská funkce) [edit]
Přístup k prvkům
zpřístupní prvek na zadané pozici s kontrolou překročení mezí
(veřejná členská funkce) [edit]
zpřístupní prvek na zadané pozici
(veřejná členská funkce) [edit]
zpřístupní první prvek
(veřejná členská funkce) [edit]
zpřístupní poslední prvek
(veřejná členská funkce) [edit]
(C++11)
přímý přístup k vnitřnímu poli
(veřejná členská funkce) [edit]
Iterátory
vrátí iterátor pro první prvek
(veřejná členská funkce) [edit]
vrátí iterátor pro poslední prvek
(veřejná členská funkce) [edit]
vrátí reverzní iterátor pro první prvek
(veřejná členská funkce) [edit]
vrátí reverzní iterátor pro poslední prvek
(veřejná členská funkce) [edit]
Kapacita
zjistí zda-li je kontejner prázdný
(veřejná členská funkce) [edit]
zjistí počet prvků
(veřejná členská funkce) [edit]
vrátí maximální možný počet prvků
(veřejná členská funkce) [edit]
rezervuje paměť pro prvky
(veřejná členská funkce) [edit]
vrátí počet prvků, kolik se vejde do současného alokovaného místa
(veřejná členská funkce) [edit]
požádá o uvolnění nevyužité paměti
(veřejná členská funkce) [edit]
Změna obsahu
vyprázdní kontejner
(veřejná členská funkce) [edit]
vloží prvky
(veřejná členská funkce) [edit]
(C++11)
vloží, konstruuje prvek přímo v místě vložení
(veřejná členská funkce) [edit]
odstraní prvky
(veřejná členská funkce) [edit]
přidá prvek na konec
(veřejná členská funkce) [edit]
přidá, konstruuje prvek přímo na konci vektoru
(veřejná členská funkce) [edit]
odstraní poslední prvek
(veřejná členská funkce) [edit]
přenastaví počet prvků
(veřejná členská funkce) [edit]
prohodí obsahy
(veřejná členská funkce) [edit]

[editovat] Nečlenské funkce

porovná dvojici kontejnerů vector lexikografickým porovnáním prvků
(šablona funkce) [edit]
specializace algoritmu std::swap
(šablona funkce) [edit]