logo

Vektorius C++ STL

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

  1. pradėti () – Grąžina iteratorių, nukreipiantį į pirmąjį vektoriaus elementą
  2. galas() – Grąžina iteratorių, nurodantį teorinį elementą, einantį po paskutinio vektoriaus elemento
  3. rbegin () – Grąžina atvirkštinį iteratorių, nukreipiantį į paskutinį vektoriaus elementą (atvirkštinė pradžia). Jis pereina nuo paskutinio iki pirmojo elemento
  4. pateikti () – Grąžina atvirkštinį iteratorių, nukreipiantį į teorinį elementą, esantį prieš pirmąjį vektoriaus elementą (laikomas atvirkštine pabaiga)
  5. cbegin() – Grąžina pastovų iteratorių, nukreipiantį į pirmąjį vektoriaus elementą.
  6. keletas() – Grąžina pastovų iteratorių, nukreipiantį į teorinį elementą, kuris seka po paskutinio vektoriaus elemento.
  7. crbegin () – Grąžina pastovų atvirkštinį iteratorių, nukreipiantį į paskutinį vektoriaus elementą (atvirkštinė pradžia). Jis pereina nuo paskutinio iki pirmojo elemento
  8. 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

  1. dydis () – Grąžina vektoriaus elementų skaičių.
  2. maksimalus_dydis() – Grąžina maksimalų elementų skaičių, kurį gali turėti vektorius.
  3. talpa () – Grąžina vektoriui šiuo metu skirtos saugyklos vietos dydį, išreikštą elementų skaičiumi.
  4. pakeisti dydį (n) – Pakeičia konteinerio dydį, kad jame būtų „n“ elementų.
  5. tuščia() – Grąžina, ar konteineris tuščias.
  6. Sumažinti, kad tilptų() – Sumažina talpyklos talpą, kad ji atitiktų jo dydį, ir sunaikina visus elementus, kurie viršija talpą.
  7. 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ų

  1. atskaitos operatorius [g] – Grąžina nuorodą į elementą, esantį vektoriaus „g“ padėtyje
  2. g) – Grąžina nuorodą į elementą, esantį vektoriaus „g“ padėtyje
  3. priekis () – Grąžina nuorodą į pirmąjį vektoriaus elementą
  4. atgal () – Grąžina nuorodą į paskutinį vektoriaus elementą
  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;> }>

    >

    >

    Išvestis

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

    Modifikatoriai

    1. priskirti () – Jis priskiria naują reikšmę vektoriniams elementams, pakeisdamas senus
    2. pastumti atgal() – Jis stumia elementus į vektorių iš nugaros
    3. pop_back() – Naudojamas vektoriaus elementams iš užpakalio išpūsti arba pašalinti.
    4. Įdėti() – Jis įterpia naujus elementus prieš elementą nurodytoje vietoje
    5. ištrinti () – Naudojamas elementams iš konteinerio pašalinti iš nurodytos padėties ar diapazono.
    6. apsikeitimas () – Jis naudojamas vieno vektoriaus turiniui pakeisti kitu to paties tipo vektoriumi. Dydžiai gali skirtis.
    7. aišku () – Jis naudojamas pašalinti visus vektoriaus konteinerio elementus
    8. emplace () – Jis prailgina talpyklą, įterpdamas naują elementą į vietą
    9. 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švestis

    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>

    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

    pastumti atgal()

    Prideda elementą prie vektoriaus pabaigos.

    pop_back()

    Pašalina paskutinį vektoriaus elementą.

    dydis ()

    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į.

    tuščia()

    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ą

    Įdėti()

    Įterpia elementus konkrečioje vektoriaus vietoje.

    ištrinti ()

    Pašalina elementus iš konkrečios vektoriaus padėties arba diapazono.

    apsikeitimas ()

    Sukeičia vektoriaus turinį su kito vektoriaus turiniu.

    aišku ()

    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++