Vektori ir tādi paši kā dinamiskie masīvi ar iespēju automātiski mainīt savu izmēru, kad elements tiek ievietots vai dzēsts, un konteiners tos apstrādā automātiski. Vektoru elementi tiek ievietoti blakus esošajā krātuvē, lai tiem varētu piekļūt un šķērsot, izmantojot iteratorus. Vektoros dati tiek ievietoti beigās. Ievietošana beigās aizņem diferencētu laiku, jo dažreiz masīvs var būt jāpaplašina. Pēdējā elementa noņemšana aizņem tikai pastāvīgu laiku, jo izmērs netiek mainīts. Ievietošana un dzēšana sākumā vai vidū ir lineāra laikā.
Kas ir std::vector C++?
std::vektors valodā C++ ir klases veidne, kurā ir vektora konteiners un tā dalībnieku funkcijas. Tas ir definēts iekšpusē galvenes fails. Std::vector klases dalībnieku funkcijas nodrošina dažādas vektoru konteineru funkcijas.
Sintakse vektora deklarēšanai programmā C++
std::vector vectorName;>
kur datu tips ir katra vektora elementa datu veids. Varat noņemt std::, ja jau esat izmantojis std nosaukumvietu.
Vektora inicializācija C++
Mēs varam inicializēt vektoru šādos veidos:
1. Inicializācija, izmantojot sarakstu
Šī inicializācija tiek veikta ar deklarāciju. Šeit mēs nododam elementu sarakstu vektora konstruktoram, lai izveidotu vektoru ar norādītajiem elementiem.
vector name({ value1, value2, value3 .... });>
2. Inicializācija Ar vienu vērtību
Šī inicializācija tiek veikta arī ar deklarāciju. Šeit mēs norādām vektora lielumu un pēc tam inicializējam katru vektora elementu ar vērtību.
vector name(size, value);>
3. Inicializācija no cita vektora
Šī inicializācija tiek izmantota, lai izveidotu vektoru, kas ir precīza other_vec kopija.
vector name(other_vec);>
Dažas parasti izmantotās std::vector klases dalībnieku funkcijas ir uzrakstītas zemāk:
Iteratori
- sākt () – Atgriež iteratoru, kas norāda uz vektora pirmo elementu
- beigas () – atgriež iteratoru, kas norāda uz teorētisko elementu, kas seko pēdējam vektora elementam
- rbegin() – Atgriež apgriezto iteratoru, kas norāda uz pēdējo vektora elementu (apgrieztais sākums). Tas pāriet no pēdējā uz pirmo elementu
- renderēt () – Atgriež apgriezto iteratoru, kas norāda uz teorētisko elementu, kas atrodas pirms pirmā elementa vektorā (tiek uzskatīts par apgriezto galu)
- cbegin() – Atgriež konstantu iteratoru, kas norāda uz vektora pirmo elementu.
- daži() – Atgriež konstantu iteratoru, kas norāda uz teorētisko elementu, kas seko vektora pēdējam elementam.
- crbegin() – Atgriež pastāvīgu reverso iteratoru, kas norāda uz pēdējo vektora elementu (apgrieztais sākums). Tas pāriet no pēdējā uz pirmo elementu
- crend () – Atgriež konstantu reverso iteratoru, kas norāda uz teorētisko elementu, kas atrodas pirms pirmā elementa vektorā (tiek uzskatīts par apgriezto galu)
C++
// C++ program to illustrate the> // iterators in vector> #include> #include> > using> namespace> std;> > int> main()> {> > vector<> int> >g1;>> for> (> int> i = 1; i <= 5; i++)> > g1.push_back(i);> > > cout <<> 'Output of begin and end: '> ;> > for> (> auto> i = g1.begin(); i != g1.end(); ++i)> > cout << *i <<> ' '> ;> > > cout <<> '
Output of cbegin and cend: '> ;> > for> (> auto> i = g1.cbegin(); i != g1.cend(); ++i)> > cout << *i <<> ' '> ;> > > cout <<> '
Output of rbegin and rend: '> ;> > for> (> auto> ir = g1.rbegin(); ir != g1.rend(); ++ir)> > cout << *ir <<> ' '> ;> > > cout <<> '
Output of crbegin and crend : '> ;> > for> (> auto> ir = g1.crbegin(); ir != g1.crend(); ++ir)> > cout << *ir <<> ' '> ;> > > return> 0;> }> |
>
>Izvade
Output of begin and end: 1 2 3 4 5 Output of cbegin and cend: 1 2 3 4 5 Output of rbegin and rend: 5 4 3 2 1 Output of crbegin and crend : 5 4 3 2 1>
Jauda
- Izmērs() – atgriež vektora elementu skaitu.
- max_size() – Atgriež maksimālo elementu skaitu, ko vektors var saturēt.
- ietilpība () – Atgriež vektoram pašlaik piešķirtās krātuves lielumu, kas izteikts kā elementu skaits.
- mainīt izmērus (n) – Maina konteinera izmērus, lai tajā būtu “n” elementi.
- tukšs () – Atgriež, vai konteiners ir tukšs.
- shrink_to_fit() – Samazina konteinera ietilpību, lai tas atbilstu tā izmēram, un iznīcina visus elementus, kas pārsniedz ietilpību.
- rezerve () – Pieprasa, lai vektora kapacitāte būtu vismaz pietiekama, lai tajā būtu n elementi.
C++
// C++ program to illustrate the> // capacity function in vector> #include> #include> > using> namespace> std;> > int> main()> {> > vector<> int> >g1;>> for> (> int> i = 1; i <= 5; i++)> > g1.push_back(i);> > > cout <<> 'Size : '> << g1.size();> > cout <<> '
Capacity : '> << g1.capacity();> > cout <<> '
Max_Size : '> << g1.max_size();> > > // resizes the vector size to 4> > g1.resize(4);> > > // prints the vector size after resize()> > cout <<> '
Size : '> << g1.size();> > > // checks if the vector is empty or not> > if> (g1.empty() ==> false> )> > cout <<> '
Vector is not empty'> ;> > else> > cout <<> '
Vector is empty'> ;> > > // Shrinks the vector> > g1.shrink_to_fit();> > cout <<> '
Vector elements are: '> ;> > for> (> auto> it = g1.begin(); it != g1.end(); it++)> > cout << *it <<> ' '> ;> > > return> 0;> }> |
>
java atlases kārtošana
>Izvade
Size : 5 Capacity : 8 Max_Size : 4611686018427387903 Size : 4 Vector is not empty Vector elements are: 1 2 3 4>
Piekļuve elementam
- atsauces operators [g] – Atgriež atsauci uz elementu vektora pozīcijā “g”.
- pie(g) – Atgriež atsauci uz elementu vektora pozīcijā “g”.
- priekšā () – Atgriež atsauci uz vektora pirmo elementu
- atpakaļ () – Atgriež atsauci uz pēdējo vektora elementu
- C++
// C++ program to illustrate the>
// element access in vector>
#include>
using>
namespace>
std;>
>
int>
main()>
{>
>
vector<>
int>
>g1;>>
> for>
(>
int>
i = 1; i <= 10; i++)>
>
g1.push_back(i * 10);>
>
>
cout <<>
' Reference operator [g] : g1[2] = '>
<< g1[2];>
>
>
cout <<>
' at : g1.at(4) = '>
<< g1.at(4);>
>
>
cout <<>
' front() : g1.front() = '>
<< g1.front();>
>
>
cout <<>
' back() : g1.back() = '>
<< g1.back();>
>
>
// pointer to the first element>
>
int>
* pos = g1.data();>
>
>
cout <<>
' The first element is '>
<< *pos;>
>
return>
0;>
}>
>
>
IzvadeReference operator [g] : g1[2] = 30 at : g1.at(4) = 50 front() : g1.front() = 10 back() : g1.back() = 100 The first element is 10>
Modifikatori
- piešķirt () – Tas piešķir vektora elementiem jaunu vērtību, aizstājot vecos
- atgrūst() – Tas iespiež elementus vektorā no aizmugures
- pop_back() – To izmanto, lai uzspiestu vai noņemtu elementus no vektora no aizmugures.
- ievietot () – Tas ievieto jaunus elementus pirms elementa norādītajā vietā
- dzēst () – To izmanto, lai izņemtu elementus no konteinera no norādītās pozīcijas vai diapazona.
- apmainīt () - To izmanto, lai apmainītu viena vektora saturu ar citu tāda paša veida vektoru. Izmēri var atšķirties.
- skaidrs () – To izmanto, lai noņemtu visus vektora konteinera elementus
- emplace () – Tas pagarina konteineru, ievietojot tajā jaunu elementu
- emplace_back() – To izmanto, lai vektora konteinerā ievietotu jaunu elementu, jaunais elements tiek pievienots vektora beigās
C++
// C++ program to illustrate the>
// Modifiers in vector>
#include>
#include>
using>
namespace>
std;>
>
int>
main()>
{>
>
// Assign vector>
>
vector<>
int>
>iekšā;>>
> // fill the vector with 10 five times>
>
v.assign(5, 10);>
>
>
cout <<>
'The vector elements are: '>
;>
>
for>
(>
int>
i = 0; i cout << v[i] << ' '; // inserts 15 to the last position v.push_back(15); int n = v.size(); cout << ' The last element is: ' << v[n - 1]; // removes last element v.pop_back(); // prints the vector cout << ' The vector elements are: '; for (int i = 0; i cout << v[i] << ' '; // inserts 5 at the beginning v.insert(v.begin(), 5); cout << ' The first element is: ' << v[0]; // removes the first element v.erase(v.begin()); cout << ' The first element is: ' << v[0]; // inserts at the beginning v.emplace(v.begin(), 5); cout << ' The first element is: ' << v[0]; // Inserts 20 at the end v.emplace_back(20); n = v.size(); cout << ' The last element is: ' << v[n - 1]; // erases the vector v.clear(); cout << ' Vector size after clear(): ' << v.size(); // two vector to perform swap vector
v1, v2; v1.push_back(1); v1.push_back(2); v2.push_back(3); v2.push_back(4); cout<< ' Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; // Swaps v1 and v2 v1.swap(v2); cout << ' After Swap Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; }> java lambda izteiksmes
>
>
IzvadeThe vector elements are: 10 10 10 10 10 The last element is: 15 The vector elements are: 10 10 10 10 10 The first element is: 5 The first element is: 10 The first element is: 5 The last element is: 20 Vector size after erase(): 0 Vector 1: 1 2 Vector 2: 3 4 After Swap Vector 1: 3 4 Vector 2: 1 2>
Laika sarežģītība dažādu darbību veikšanai ar vektoriem ir
- Brīvpiekļuve — nemainīgs O(1)
- Elementu ievietošana vai noņemšana beigās – konstante O(1)
- Elementu ievietošana vai noņemšana – lineāra attālumā līdz vektora O(N) galam
- Zinot izmēru – konstante O(1)
- Vektora izmēru maiņa — Lineārs O(N)
Visas std::vector locekļu funkcijas
Šis ir visu std::vector klases dalībnieku funkciju saraksts C++:
Vektora funkcija
Apraksts
Pievieno elementu vektora beigām. Noņem vektora pēdējo elementu. Atgriež vektora elementu skaitu. max_size()
Atgriež maksimālo elementu skaitu, ko vektors var saturēt. mainīt izmēru ()
Maina vektora izmēru. Pārbauda, vai vektors ir tukšs. operators[]
Piekļūst elementam noteiktā vietā. at ()
Piekļūst elementam noteiktā vietā, pārbaudot robežas. priekšā ()
Piekļūst pirmajam vektora elementam. atpakaļ ()
skaits atšķiras
Piekļūst pēdējam vektora elementam. sākt ()
Atgriež iteratoru, kas norāda uz vektora pirmo elementu. beigas ()
Atgriež iteratoru, kas norāda uz vektora pagātnes beigu elementu. rbegin()
Atgriež apgriezto iteratoru, kas norāda uz vektora pēdējo elementu. renderēt ()
Atgriež apgriezto iteratoru, kas norāda uz elementu, kas ir pirms pirmā vektora elementa. cbegin
Atgriež const_iterator sākumā daži
Atgriež const_iterator līdz beigām crbegin
Atgriež const_reverse_iterator atpakaļgaitas sākumu ticēt
Atgriež const_reverse_iterator apgrieztajā galā Ievieto elementus noteiktā vektora vietā. Noņem elementus no noteiktas pozīcijas vai diapazona vektorā. apmainīt ()
Apmaina vektora saturu ar cita vektora saturu. Noņem visus elementus no vektora. emplace ()
Konstruē un ievieto vektorā elementu. emplace_back()
Konstruē un ievieto elementu vektora beigās. piešķirt ()
Piešķir vektora elementiem jaunas vērtības, aizstājot vecās. ietilpība ()
Atgriež vektoram pašlaik piešķirtās krātuves lielumu. rezerve ()
Pieprasa, lai vektora kapacitāte būtu vismaz pietiekama, lai ietvertu noteiktu skaitu elementu. shrink_to_fit()
Samazina atmiņas izmantošanu, atbrīvojot neizmantotu vietu. get_allocator
Atgriež ar vektoru saistītā sadalītāja objekta kopiju. Vajag izlasīt:
- Kā pārbaudīt, vai vektorā C++ ir norādīts elements?
- Kā atrast noteikta elementa indeksu vektorā C++
- Vektoru kārtošana programmā C++