logo

Vektori C++ STL:ssä

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

  1. alkaa() – Palauttaa iteraattorin, joka osoittaa vektorin ensimmäiseen elementtiin
  2. loppu () – Palauttaa iteraattorin, joka osoittaa teoreettiseen elementtiin, joka seuraa vektorin viimeistä elementtiä
  3. rbegin() – Palauttaa käänteisen iteraattorin, joka osoittaa vektorin viimeiseen elementtiin (käänteinen alku). Se siirtyy viimeisestä elementistä ensimmäiseen
  4. render() – Palauttaa käänteisen iteraattorin, joka osoittaa vektorin ensimmäistä elementtiä edeltävään teoreettiseen elementtiin (jota pidetään käänteisenä päänä)
  5. cbegin() – Palauttaa vakioiteraattorin, joka osoittaa vektorin ensimmäiseen elementtiin.
  6. muutama() – Palauttaa vakioiteraattorin, joka osoittaa teoreettiseen elementtiin, joka seuraa vektorin viimeistä elementtiä.
  7. crbegin() – Palauttaa vakion käänteisen iteraattorin, joka osoittaa vektorin viimeiseen elementtiin (käänteinen alku). Se siirtyy viimeisestä elementistä ensimmäiseen
  8. 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

  1. koko() – Palauttaa vektorin elementtien määrän.
  2. max_size() – Palauttaa enimmäismäärän elementtejä, jotka vektori voi sisältää.
  3. kapasiteetti () – Palauttaa vektorille tällä hetkellä varatun tallennustilan koon elementtien lukumääränä.
  4. muuta kokoa (n) – Muuttaa säilön kokoa niin, että se sisältää 'n' elementtiä.
  5. tyhjä() – Palauttaa, onko säiliö tyhjä.
  6. kutistetaan sopivaksi() – Vähentää säiliön kapasiteettia sen kokoiseksi ja tuhoaa kaikki kapasiteetin ylittävät elementit.
  7. 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

  1. viiteoperaattori [g] – Palauttaa viittauksen vektorissa olevaan elementtiin 'g'.
  2. at(g) – Palauttaa viittauksen vektorissa olevaan elementtiin 'g'.
  3. edessä () – Palauttaa viittauksen vektorin ensimmäiseen elementtiin
  4. takaisin() – Palauttaa viittauksen vektorin viimeiseen elementtiin
  5. 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

    1. assign() – Se antaa vektorielementeille uuden arvon korvaamalla vanhat
    2. työnnä takaisin() – Se työntää elementit vektoriksi takaapäin
    3. pop_back() – Sitä käytetään pop- tai poistamaan elementtejä vektorista takaapäin.
    4. insert() – Se lisää uusia elementtejä ennen elementtiä määritettyyn kohtaan
    5. Erase() – Sitä käytetään elementtien poistamiseen säiliöstä määritetyltä sijainnilta tai alueelta.
    6. vaihtaa() – Sitä käytetään vaihtamaan yhden vektorin sisältö toiseen samantyyppiseen vektoriin. Koot voivat vaihdella.
    7. asia selvä() – Sitä käytetään poistamaan kaikki vektorisäiliön elementit
    8. emplace() – Se laajentaa säiliötä lisäämällä uuden elementin paikalleen
    9. 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

    työnnä takaisin()

    Lisää elementin vektorin loppuun.

    pop_back()

    Poistaa vektorin viimeisen elementin.

    koko()

    Palauttaa vektorin elementtien määrän.

    max_size()

    Palauttaa enimmäismäärän elementtejä, jotka vektori voi sisältää.

    muuta kokoa()

    Muuttaa vektorin kokoa.

    tyhjä()

    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

    insert()

    Lisää elementtejä tiettyyn kohtaan vektorissa.

    Erase()

    Poistaa elementit tietystä paikasta tai alueesta vektorissa.

    vaihtaa()

    Vaihtaa vektorin sisällön toisen vektorin sisällön kanssa.

    asia selvä()

    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