Vektorit ovat samoja kuin dynaamiset taulukot, joilla on mahdollisuus muuttaa itsensä kokoa automaattisesti, kun elementti lisätään tai poistetaan, ja säilö käsittelee niiden tallennuksen automaattisesti. Vektorielementit sijoitetaan vierekkäiseen tallennustilaan, jotta niihin voidaan päästä käsiksi ja niitä voidaan kulkea iteraattoreilla. Vektoreissa data lisätään loppuun. Lopussa lisääminen vie differentiaaliaikaa, koska joskus taulukkoa on ehkä laajennettava. Viimeisen elementin poistaminen vie vain vakioajan, koska kokoa ei muuteta. Alkuun tai keskelle lisääminen ja pyyhkiminen on ajallisesti lineaarista.
Mikä on std::vector C++:ssa?
std::vektori C++:ssa on luokkamalli, joka sisältää vektorisäiliön ja sen jäsenfunktiot. Se on määritelty sisällä otsikkotiedosto. Std::vector-luokan jäsenfunktiot tarjoavat erilaisia toimintoja vektorisäiliöille.
Syntaksi Declare Vectorille C++:ssa
std::vector vectorName;>
jossa tietotyyppi on vektorin kunkin elementin datatyyppi. Voit poistaa std:::n, jos olet jo käyttänyt std-nimiavaruutta.
Vektorin alustus C++:ssa
Voimme alustaa vektorin seuraavilla tavoilla:
1. Alustus käyttäen luetteloa
Tämä alustus tehdään ilmoituksella. Tässä välitämme elementtiluettelon vektorikonstruktorille luodaksemme vektorin määritetyillä elementeillä.
vector name({ value1, value2, value3 .... });>
2. Alustus Yhdellä arvolla
Tämä alustus tehdään myös ilmoituksella. Tässä määritämme vektorin koon ja alustamme sitten vektorin jokaisen elementin arvolla.
vector name(size, value);>
3. Alustus toisesta vektorista
Tätä alustusta käytetään luomaan vektori, joka on tarkka kopio muusta_vec:stä.
vector name(other_vec);>
Jotkut std::vector-luokan yleisesti käytetyt jäsenfunktiot on kirjoitettu alla:
Iteraattorit
- alkaa() – Palauttaa iteraattorin, joka osoittaa vektorin ensimmäiseen elementtiin
- loppu () – Palauttaa iteraattorin, joka osoittaa teoreettiseen elementtiin, joka seuraa vektorin viimeistä elementtiä
- rbegin() – Palauttaa käänteisen iteraattorin, joka osoittaa vektorin viimeiseen elementtiin (käänteinen alku). Se siirtyy viimeisestä elementistä ensimmäiseen
- render() – Palauttaa käänteisen iteraattorin, joka osoittaa vektorin ensimmäistä elementtiä edeltävään teoreettiseen elementtiin (jota pidetään käänteisenä päänä)
- cbegin() – Palauttaa vakioiteraattorin, joka osoittaa vektorin ensimmäiseen elementtiin.
- muutama() – Palauttaa vakioiteraattorin, joka osoittaa teoreettiseen elementtiin, joka seuraa vektorin viimeistä elementtiä.
- crbegin() – Palauttaa vakion käänteisen iteraattorin, joka osoittaa vektorin viimeiseen elementtiin (käänteinen alku). Se siirtyy viimeisestä elementistä ensimmäiseen
- crend() – Palauttaa vakion käänteisen iteraattorin, joka osoittaa vektorin ensimmäistä elementtiä edeltävään teoreettiseen elementtiin (jota pidetään käänteisenä päänä)
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;> }> |
>
>Lähtö
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>
Kapasiteetti
- koko() – Palauttaa vektorin elementtien määrän.
- max_size() – Palauttaa enimmäismäärän elementtejä, jotka vektori voi sisältää.
- kapasiteetti () – Palauttaa vektorille tällä hetkellä varatun tallennustilan koon elementtien lukumääränä.
- muuta kokoa (n) – Muuttaa säilön kokoa niin, että se sisältää 'n' elementtiä.
- tyhjä() – Palauttaa, onko säiliö tyhjä.
- kutistetaan sopivaksi() – Vähentää säiliön kapasiteettia sen kokoiseksi ja tuhoaa kaikki kapasiteetin ylittävät elementit.
- varata() – Vaatii, että vektorin kapasiteetti on vähintään riittävä sisältämään n elementtiä.
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;> }> |
>
kuinka Android-kehittäjätila poistetaan käytöstä
>Lähtö
Size : 5 Capacity : 8 Max_Size : 4611686018427387903 Size : 4 Vector is not empty Vector elements are: 1 2 3 4>
Elementtien käyttöoikeus
- viiteoperaattori [g] – Palauttaa viittauksen vektorissa olevaan elementtiin 'g'.
- at(g) – Palauttaa viittauksen vektorissa olevaan elementtiin 'g'.
- edessä () – Palauttaa viittauksen vektorin ensimmäiseen elementtiin
- takaisin() – Palauttaa viittauksen vektorin viimeiseen elementtiin
- 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;>
}>
>
>
parannettu silmukalle javalle
LähtöReference operator [g] : g1[2] = 30 at : g1.at(4) = 50 front() : g1.front() = 10 back() : g1.back() = 100 The first element is 10>
Muokkaimet
- assign() – Se antaa vektorielementeille uuden arvon korvaamalla vanhat
- työnnä takaisin() – Se työntää elementit vektoriksi takaapäin
- pop_back() – Sitä käytetään pop- tai poistamaan elementtejä vektorista takaapäin.
- insert() – Se lisää uusia elementtejä ennen elementtiä määritettyyn kohtaan
- Erase() – Sitä käytetään elementtien poistamiseen säiliöstä määritetyltä sijainnilta tai alueelta.
- vaihtaa() – Sitä käytetään vaihtamaan yhden vektorin sisältö toiseen samantyyppiseen vektoriin. Koot voivat vaihdella.
- asia selvä() – Sitä käytetään poistamaan kaikki vektorisäiliön elementit
- emplace() – Se laajentaa säiliötä lisäämällä uuden elementin paikalleen
- emplace_back() – Sitä käytetään uuden elementin lisäämiseen vektorisäiliöön, uusi elementti lisätään vektorin loppuun
C++
// C++ program to illustrate the>
// Modifiers in vector>
#include>
#include>
using>
namespace>
std;>
>
int>
main()>
{>
>
// Assign vector>
>
vector<>
int>
>sisään;>>
> // 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] << ' '; }> >
>
LähtöThe 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>
Aika monimutkaisuus vektoreille erilaisten operaatioiden tekemisessä on
- Random access – vakio O(1)
- Elementtien lisääminen tai poistaminen lopussa – vakio O(1)
- Elementtien lisääminen tai poistaminen – lineaarinen etäisyydellä vektorin O(N) loppuun
- Koon tunteminen – vakio O(1)
- Vektorin koon muuttaminen - Lineaarinen O(N)
Kaikki std::vektorin jäsenfunktiot
Seuraavassa on luettelo kaikista std::vector-luokan jäsenfunktioista C++:ssa:
Vektorifunktio
Kuvaus
Lisää elementin vektorin loppuun. Poistaa vektorin viimeisen elementin. Palauttaa vektorin elementtien määrän. max_size()
Palauttaa enimmäismäärän elementtejä, jotka vektori voi sisältää. muuta kokoa()
Muuttaa vektorin kokoa. Tarkistaa, onko vektori tyhjä. operaattori[]
Käyttää elementtiä tietyssä paikassa. at()
Käyttää elementtiä tietyssä paikassa rajojen tarkistuksen avulla. edessä ()
Käyttää vektorin ensimmäistä elementtiä. takaisin()
Käyttää vektorin viimeistä elementtiä. alkaa()
Palauttaa iteraattorin, joka osoittaa vektorin ensimmäiseen elementtiin. loppu ()
Palauttaa iteraattorin, joka osoittaa vektorin loppupään elementtiin. rbegin()
Palauttaa käänteisen iteraattorin, joka osoittaa vektorin viimeiseen elementtiin. render()
Palauttaa käänteisen iteraattorin, joka osoittaa vektorin ensimmäistä elementtiä edeltävään elementtiin. cbegin
Palauttaa const_iterator alkuun muutama
Palauttaa const_iteratorin loppuun crbegin
mikä on regex java
Palauttaa const_reverse_iterator käänteisen alkuun uskoa
Palauttaa const_reverse_iterator käänteiseen päähän Lisää elementtejä tiettyyn kohtaan vektorissa. Poistaa elementit tietystä paikasta tai alueesta vektorissa. vaihtaa()
Vaihtaa vektorin sisällön toisen vektorin sisällön kanssa. Poistaa kaikki elementit vektorista. emplace()
Rakentaa ja lisää elementin vektoriin. emplace_back()
Rakentaa ja lisää elementin vektorin loppuun. assign()
Antaa uusia arvoja vektorielementeille korvaamalla vanhat. kapasiteetti ()
Palauttaa vektorille tällä hetkellä varatun tallennustilan koon. varata()
Pyytää, että vektorin kapasiteetti on vähintään riittävä sisältämään tietyn määrän elementtejä. kutistetaan sopivaksi()
Vähentää muistin käyttöä vapauttamalla käyttämätöntä tilaa. get_allocator
Palauttaa kopion vektoriin liittyvästä allokaattoriobjektista. Täytyy lukea:
- Kuinka tarkistaa, sisältääkö vektori tietyn elementin C++:ssa?
- Kuinka löytää tietyn elementin indeksi vektorista C++:ssa
- Vektorin lajittelu C++:ssa