logo

Vektor v C++ STL

Vektorji so enaki kot dinamični nizi z zmožnostjo samodejnega spreminjanja velikosti, ko je element vstavljen ali izbrisan, pri čemer njihovo shranjevanje samodejno obravnava vsebnik. Vektorski elementi so postavljeni v neprekinjeno shrambo, tako da je do njih mogoče dostopati in jih prečkati z uporabo iteratorjev. Pri vektorjih se podatki vstavijo na koncu. Vstavljanje na koncu zahteva diferencialni čas, saj je včasih treba matriko razširiti. Odstranjevanje zadnjega elementa traja le konstanten čas, ker ne pride do spreminjanja velikosti. Vstavljanje in brisanje na začetku ali v sredini poteka linearno v času.

Kaj je std::vector v C++?

std::vektor v C++ je predloga razreda, ki vsebuje vektorski vsebnik in njegove članske funkcije. Definiran je znotraj naslovna datoteka. Članske funkcije razreda std::vector zagotavljajo različne funkcionalnosti vektorskim vsebnikom.



Sintaksa za deklariranje vektorja v C++

  std::vector   vectorName;>

kjer je tip podatkov tip podatkov vsakega elementa vektorja. std:: lahko odstranite, če ste že uporabljali imenski prostor std.

Inicializacija vektorja v C++

Vektor lahko inicializiramo na naslednje načine:

1. Inicializacija z uporabo seznama

Ta inicializacija se izvede z deklaracijo. Tukaj posredujemo seznam elementov vektorskemu konstruktorju, da ustvari vektor z navedenimi elementi.



  vector   name({   value1, value2, value3 ....  });>

2. Inicializacija Z eno samo vrednostjo

Ta inicializacija se izvede tudi z deklaracijo. Tukaj določimo velikost vektorja in nato inicializiramo vsak element vektorja z vrednostjo.

  vector   name(size, value);>

3. Inicializacija iz drugega vektorja

Ta inicializacija se uporablja za ustvarjanje vektorja, ki je natančna kopija other_vec.

  vector   name(other_vec);>

Nekaj ​​pogosto uporabljenih članskih funkcij razreda std::vector je zapisanih spodaj:



Iteratorji

  1. začeti() – Vrne iterator, ki kaže na prvi element v vektorju
  2. konec () – Vrne iterator, ki kaže na teoretični element, ki sledi zadnjemu elementu v vektorju
  3. rbegin() – Vrne obratni iterator, ki kaže na zadnji element v vektorju (obraten začetek). Premika se od zadnjega do prvega elementa
  4. render() – Vrne povratni iterator, ki kaže na teoretični element pred prvim elementom v vektorju (velja se za obratni konec)
  5. cbegin() – Vrne stalni iterator, ki kaže na prvi element v vektorju.
  6. nekaj() – Vrne stalni iterator, ki kaže na teoretični element, ki sledi zadnjemu elementu v vektorju.
  7. crbegin() – Vrne stalni povratni iterator, ki kaže na zadnji element v vektorju (obraten začetek). Premika se od zadnjega do prvega elementa
  8. crend() – Vrne stalni povratni iterator, ki kaže na teoretični element pred prvim elementom v vektorju (ki se šteje za obratni konec)

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;> }>

>

>

Izhod

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>

Zmogljivost

  1. velikost () – Vrne število elementov v vektorju.
  2. max_size() – Vrne največje število elementov, ki jih lahko vsebuje vektor.
  3. zmogljivost() – Vrne velikost prostora za shranjevanje, trenutno dodeljenega vektorju, izraženo kot število elementov.
  4. spremeni velikost (n) – Spremeni velikost vsebnika tako, da vsebuje 'n' elementov.
  5. prazno() – Vrne, ali je vsebnik prazen.
  6. shrink_to_fit() – Zmanjša kapaciteto posode, da ustreza njeni velikosti, in uniči vse elemente, ki presegajo zmogljivost.
  7. rezerva() – Zahteva, da je vektorska zmogljivost vsaj tolikšna, da vsebuje n elementov.

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;> }>

>

pretvori iz char v int java
>

Izhod

Size : 5 Capacity : 8 Max_Size : 4611686018427387903 Size : 4 Vector is not empty Vector elements are: 1 2 3 4>

Dostop do elementa

  1. referenčni operator [g] – Vrne sklic na element na položaju 'g' v vektorju
  2. pri (g) – Vrne sklic na element na položaju 'g' v vektorju
  3. spredaj() – Vrne sklic na prvi element v vektorju
  4. nazaj() – Vrne sklic na zadnji element v vektorju
  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;> }>

    >

    >

    Izhod

    Reference operator [g] : g1[2] = 30 at : g1.at(4) = 50 front() : g1.front() = 10 back() : g1.back() = 100 The first element is 10>

    Modifikatorji

    1. dodeli() – Vektorskim elementom dodeli novo vrednost z zamenjavo starih
    2. porini nazaj() – Potisne elemente v vektor od zadaj
    3. pop_back() – Uporablja se za izstopanje ali odstranjevanje elementov iz vektorja z zadnje strani.
    4. vstavi() – Vstavi nove elemente pred element na določenem mestu
    5. izbrisati() – Uporablja se za odstranjevanje elementov iz vsebnika z določenega položaja ali območja.
    6. zamenjaj() – Uporablja se za zamenjavo vsebine enega vektorja z drugim vektorjem iste vrste. Velikosti se lahko razlikujejo.
    7. počisti() – Uporablja se za odstranitev vseh elementov vektorskega vsebnika
    8. namestiti () – Razširi posodo z vstavitvijo novega elementa na mesto
    9. emplace_back() – Uporablja se za vstavljanje novega elementa v vektorski vsebnik, nov element se doda na konec vektorja

    C++

    konec jave




    // C++ program to illustrate the> // Modifiers in vector> #include> #include> using> namespace> std;> > int> main()> {> >// Assign vector> >vector<>int>>v;> > >// 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] << ' '; }>

    >

    >

    Izhod

    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>

    Časovna zahtevnost za izvajanje različnih operacij na vektorjih je-

    • Naključni dostop – konstanta O(1)
    • Vstavljanje ali odstranjevanje elementov na koncu – konstanta O(1)
    • Vstavljanje ali odstranjevanje elementov – linearno v razdalji do konca vektorja O(N)
    • Poznavanje velikosti – konstanta O(1)
    • Spreminjanje velikosti vektorja - linearni O(N)

    Vse funkcije članice std::vector

    Sledi seznam vseh članskih funkcij razreda std::vector v C++:

    Vektorska funkcija

    Opis

    porini nazaj()

    Doda element na konec vektorja.

    pop_back()

    Odstrani zadnji element vektorja.

    velikost ()

    Vrne število elementov v vektorju.

    max_size()

    Vrne največje število elementov, ki jih lahko vsebuje vektor.

    spremeni velikost ()

    Spremeni velikost vektorja.

    prazno()

    Preveri, ali je vektor prazen.

    operater[]

    Dostopa do elementa na določenem mestu.

    pri()

    Dostopa do elementa na določenem mestu s preverjanjem meja.

    spredaj()

    Dostopa do prvega elementa vektorja.

    nazaj()

    Dostopa do zadnjega elementa vektorja.

    začeti()

    Vrne iterator, ki kaže na prvi element vektorja.

    konec ()

    Vrne iterator, ki kaže na zadnji element vektorja.

    rbegin()

    Vrne povratni iterator, ki kaže na zadnji element vektorja.

    render()

    Vrne povratni iterator, ki kaže na element pred prvim elementom vektorja.

    cbegin

    Vrne const_iterator na začetek

    nekaj

    Vrne const_iterator na konec

    crbegin

    Vrne const_reverse_iterator na obrnjeni začetek

    verjeti

    Vrne const_reverse_iterator v obratni konec

    vstavi()

    Vstavi elemente na določen položaj v vektorju.

    izbrisati()

    Odstrani elemente z določenega položaja ali obsega v vektorju.

    zamenjaj()

    Zamenja vsebino vektorja z vsebino drugega vektorja.

    počisti()

    Odstrani vse elemente iz vektorja.

    namestiti ()

    jquery ob kliku
    Konstruira in vstavi element v vektor.

    emplace_back()

    Konstruira in vstavi element na koncu vektorja.

    dodeli()

    Vektorskim elementom dodeli nove vrednosti z zamenjavo starih.

    zmogljivost()

    Vrne velikost prostora za shranjevanje, ki je trenutno dodeljen vektorju.

    rezerva()

    Zahteva, da je vektorska zmogljivost vsaj tolikšna, da vsebuje določeno število elementov.

    shrink_to_fit()

    Zmanjša porabo pomnilnika s sprostitvijo neuporabljenega prostora.

    get_allocator

    Vrne kopijo predmeta alokatorja, povezanega z vektorjem.

    Morati prebrati: