Vektoriai yra tokie patys kaip dinaminiai masyvai su galimybe automatiškai keisti dydį, kai elementas įterpiamas arba ištrintas, o jų saugojimą automatiškai tvarko konteineris. Vektoriniai elementai dedami į gretimą saugyklą, kad juos būtų galima pasiekti ir pervažiuoti naudojant iteratorius. Vektoriuose duomenys įterpiami pabaigoje. Įterpimas pabaigoje užtrunka skirtingą laiką, nes kartais masyvą gali tekti išplėsti. Paskutinio elemento pašalinimas užtrunka tik pastovų laiką, nes dydis nekeičiamas. Įterpimas ir trynimas pradžioje arba viduryje yra linijinis laike.
Kas yra std::vector C++?
std::vektorius C++ yra klasės šablonas, kuriame yra vektoriaus konteineris ir jo narių funkcijos. Jis apibrėžiamas viduje antraštės failą. Std::vector klasės narių funkcijos suteikia įvairių vektorinių konteinerių funkcijų.
Sintaksė deklaruoti vektorių C++
std::vector vectorName;>
kur duomenų tipas yra kiekvieno vektoriaus elemento duomenų tipas. Galite pašalinti std::, jei jau naudojote std vardų erdvę.
Vektoriaus inicijavimas C++
Vektorių inicijuoti galime šiais būdais:
1. Inicijavimas naudojant sąrašą
Šis inicijavimas atliekamas su deklaracija. Čia mes perduodame elementų sąrašą vektoriaus konstruktoriui, kad sukurtume vektorių su nurodytais elementais.
vector name({ value1, value2, value3 .... });>
2. Inicijavimas Su viena verte
Šis inicijavimas taip pat atliekamas deklaruojant. Čia nurodome vektoriaus dydį ir inicijuojame kiekvieną vektoriaus elementą su reikšme.
vector name(size, value);>
3. Inicijavimas iš kito vektoriaus
Ši iniciacija naudojama norint sukurti vektorių, kuris yra tiksli kito_vec kopija.
vector name(other_vec);>
Kai kurios dažniausiai naudojamos std::vector klasės narių funkcijos yra parašytos žemiau:
Iteratoriai
- pradėti () – Grąžina iteratorių, nukreipiantį į pirmąjį vektoriaus elementą
- galas() – Grąžina iteratorių, nurodantį teorinį elementą, einantį po paskutinio vektoriaus elemento
- rbegin () – Grąžina atvirkštinį iteratorių, nukreipiantį į paskutinį vektoriaus elementą (atvirkštinė pradžia). Jis pereina nuo paskutinio iki pirmojo elemento
- pateikti () – Grąžina atvirkštinį iteratorių, nukreipiantį į teorinį elementą, esantį prieš pirmąjį vektoriaus elementą (laikomas atvirkštine pabaiga)
- cbegin() – Grąžina pastovų iteratorių, nukreipiantį į pirmąjį vektoriaus elementą.
- keletas() – Grąžina pastovų iteratorių, nukreipiantį į teorinį elementą, kuris seka po paskutinio vektoriaus elemento.
- crbegin () – Grąžina pastovų atvirkštinį iteratorių, nukreipiantį į paskutinį vektoriaus elementą (atvirkštinė pradžia). Jis pereina nuo paskutinio iki pirmojo elemento
- crend () – Grąžina pastovų atvirkštinį iteratorių, nukreipiantį į teorinį elementą, esantį prieš pirmąjį vektoriaus elementą (laikomas atvirkštine pabaiga)
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;> }> |
>
>Išvestis
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>
Talpa
- dydis () – Grąžina vektoriaus elementų skaičių.
- maksimalus_dydis() – Grąžina maksimalų elementų skaičių, kurį gali turėti vektorius.
- talpa () – Grąžina vektoriui šiuo metu skirtos saugyklos vietos dydį, išreikštą elementų skaičiumi.
- pakeisti dydį (n) – Pakeičia konteinerio dydį, kad jame būtų „n“ elementų.
- tuščia() – Grąžina, ar konteineris tuščias.
- Sumažinti, kad tilptų() – Sumažina talpyklos talpą, kad ji atitiktų jo dydį, ir sunaikina visus elementus, kurie viršija talpą.
- rezervas () – Reikalauja, kad vektoriaus talpa būtų bent tokia, kad jame būtų n elementų.
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;> }> |
>
objekto konvertavimas į eilutę
>Išvestis
Size : 5 Capacity : 8 Max_Size : 4611686018427387903 Size : 4 Vector is not empty Vector elements are: 1 2 3 4>
Prieiga prie elementų
- atskaitos operatorius [g] – Grąžina nuorodą į elementą, esantį vektoriaus „g“ padėtyje
- g) – Grąžina nuorodą į elementą, esantį vektoriaus „g“ padėtyje
- priekis () – Grąžina nuorodą į pirmąjį vektoriaus elementą
- atgal () – Grąžina nuorodą į paskutinį vektoriaus elementą
- 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;>
}>
>
>
IšvestisReference operator [g] : g1[2] = 30 at : g1.at(4) = 50 front() : g1.front() = 10 back() : g1.back() = 100 The first element is 10>
Modifikatoriai
- priskirti () – Jis priskiria naują reikšmę vektoriniams elementams, pakeisdamas senus
- pastumti atgal() – Jis stumia elementus į vektorių iš nugaros
- pop_back() – Naudojamas vektoriaus elementams iš užpakalio išpūsti arba pašalinti.
- Įdėti() – Jis įterpia naujus elementus prieš elementą nurodytoje vietoje
- ištrinti () – Naudojamas elementams iš konteinerio pašalinti iš nurodytos padėties ar diapazono.
- apsikeitimas () – Jis naudojamas vieno vektoriaus turiniui pakeisti kitu to paties tipo vektoriumi. Dydžiai gali skirtis.
- aišku () – Jis naudojamas pašalinti visus vektoriaus konteinerio elementus
- emplace () – Jis prailgina talpyklą, įterpdamas naują elementą į vietą
- emplace_back() – Jis naudojamas naujam elementui įterpti į vektoriaus konteinerį, naujas elementas pridedamas prie vektoriaus galo
C++
// C++ program to illustrate the>
// Modifiers in vector>
#include>
#include>
using>
namespace>
std;>
>
int>
main()>
{>
>
// Assign vector>
>
vector<>
int>
>in;>>
> // 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] << ' '; }> anuliuoti paskutinį įsipareigojimą
>
>
IšvestisThe 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>
Laiko sudėtingumas atliekant įvairias operacijas su vektoriais yra
- Atsitiktinė prieiga – pastovus O(1)
- Elementų įdėjimas arba pašalinimas pabaigoje – konstanta O(1)
- Elementų įterpimas arba pašalinimas – tiesinis atstumu iki vektoriaus O(N) galo
- Žinant dydį – konstanta O(1)
- Vektoriaus dydžio keitimas – tiesinis O(N)
Visos std::vector narių funkcijos
Toliau pateikiamas visų std::vector klasės narių funkcijų sąrašas C++:
Vektorinė funkcija
apibūdinimas
Prideda elementą prie vektoriaus pabaigos. Pašalina paskutinį vektoriaus elementą. Grąžina vektoriaus elementų skaičių. maksimalus_dydis()
Grąžina maksimalų elementų skaičių, kurį vektorius gali turėti. pakeisti dydį ()
Pakeičia vektoriaus dydį. Patikrina, ar vektorius tuščias. operatorius[]
Prieina prie elemento konkrečioje vietoje. adresu ()
Prieina prie elemento konkrečioje vietoje, tikrindamas ribas. priekis ()
Prieina prie pirmojo vektoriaus elemento. atgal ()
Prieina paskutinį vektoriaus elementą. pradėti ()
Grąžina iteratorių, nukreipiantį į pirmąjį vektoriaus elementą. galas()
Grąžina iteratorių, nukreipiantį į vektoriaus praeities pabaigos elementą. rbegin ()
nginx kintamieji
Grąžina atvirkštinį iteratorių, nukreipiantį į paskutinį vektoriaus elementą. pateikti ()
Grąžina atvirkštinį iteratorių, nukreipiantį į elementą, esantį prieš pirmąjį vektoriaus elementą. cbegin
Grąžina const_iterator į pradžią keletas
Grąžina const_iterator į pabaigą crbegin
Grąžina const_reverse_iterator į atvirkštinę pradžią tikėti
Grąžina const_reverse_iterator į atvirkštinį galą Įterpia elementus konkrečioje vektoriaus vietoje. Pašalina elementus iš konkrečios vektoriaus padėties arba diapazono. apsikeitimas ()
Sukeičia vektoriaus turinį su kito vektoriaus turiniu. Pašalina visus elementus iš vektoriaus. emplace ()
Sukonstruoja ir įterpia elementą į vektorių. emplace_back()
Sukonstruoja ir įterpia elementą vektoriaus gale. priskirti ()
Priskiria naujas reikšmes vektoriniams elementams, pakeisdamas senas. talpa ()
Grąžina vektoriui šiuo metu skirtos saugyklos vietos dydį. rezervas ()
Prašo, kad vektoriaus talpa būtų bent tokia, kad jame būtų nurodytas skaičius elementų. Sumažinti, kad tilptų()
Sumažina atminties naudojimą, atlaisvindama nepanaudotos vietos. get_allocator
Grąžina su vektoriumi susieto skirstytuvo objekto kopiją. Privaloma perskaityti:
- Kaip patikrinti, ar vektoriuje yra nurodytas elementas C++?
- Kaip rasti nurodyto elemento indeksą vektoryje C++
- Vektoriaus rūšiavimas C++