logo

Vektor i C++ STL

Vektorer er de samme som dynamiske arrays med evnen til at ændre størrelsen på sig selv automatisk, når et element indsættes eller slettes, og deres lagring håndteres automatisk af containeren. Vektorelementer placeres i sammenhængende lager, så de kan tilgås og gennemløbes ved hjælp af iteratorer. I vektorer indsættes data til sidst. Indsættelse i slutningen tager differentiel tid, da arrayet nogle gange skal udvides. Fjernelse af det sidste element tager kun konstant tid, fordi der ikke sker nogen ændring af størrelse. Indsættelse og sletning i begyndelsen eller i midten er lineær i tid.

Hvad er std::vektor i C++?

std::vektor i C++ er klasseskabelonen, der indeholder vektorbeholderen og dens medlemsfunktioner. Det er defineret inde i header-fil. Medlemsfunktionerne i std::vector-klassen giver forskellige funktionaliteter til vektorbeholdere.



Syntaks til at erklære vektor i C++

  std::vector   vectorName;>

hvor datatypen er datatypen for hvert element i vektoren. Du kan fjerne std:: hvis du allerede har brugt std navneområdet.

Initialisering af Vector i C++

Vi kan initialisere en vektor på følgende måder:

1. Initialisering ved hjælp af liste

Denne initialisering udføres med en erklæring. Her sender vi listen over elementer til vektorkonstruktøren for at skabe en vektor med de angivne elementer.



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

2. Initialisering Med en enkelt værdi

Denne initialisering udføres også med erklæring. Her angiver vi størrelsen af ​​vektoren og initialiserer derefter hvert element i vektoren med værdien.

  vector   name(size, value);>

3. Initialisering fra en anden vektor

Denne initialisering bruges til at skabe en vektor, der er en nøjagtig kopi af other_vec.

  vector   name(other_vec);>

Nogle almindeligt anvendte medlemsfunktioner af std::vector class er skrevet nedenfor:



Iteratorer

  1. begynde() – Returnerer en iterator, der peger på det første element i vektoren
  2. ende() – Returnerer en iterator, der peger på det teoretiske element, der følger efter det sidste element i vektoren
  3. rbegin() – Returnerer en omvendt iterator, der peger på det sidste element i vektoren (omvendt begyndelse). Det bevæger sig fra sidste til første element
  4. render() – Returnerer en omvendt iterator, der peger på det teoretiske element, der går forud for det første element i vektoren (betragtet som omvendt ende)
  5. cbegin() – Returnerer en konstant iterator, der peger på det første element i vektoren.
  6. nogle få() – Returnerer en konstant iterator, der peger på det teoretiske element, der følger efter det sidste element i vektoren.
  7. crbegin() – Returnerer en konstant omvendt iterator, der peger på det sidste element i vektoren (omvendt begyndelse). Det bevæger sig fra sidste til første element
  8. crend() – Returnerer en konstant omvendt iterator, der peger på det teoretiske element, der går forud for det første element i vektoren (betragtet som omvendt ende)

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

>

>

Produktion

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>

Kapacitet

  1. størrelse() – Returnerer antallet af elementer i vektoren.
  2. max_size() – Returnerer det maksimale antal elementer, som vektoren kan indeholde.
  3. kapacitet() – Returnerer størrelsen af ​​den lagerplads, der i øjeblikket er allokeret til vektoren udtrykt som antal elementer.
  4. ændre størrelse (n) – Ændrer størrelsen på beholderen, så den indeholder 'n'-elementer.
  5. tom() – Returnerer om beholderen er tom.
  6. shrink_to_fit() – Reducerer beholderens kapacitet, så den passer til dens størrelse og ødelægger alle elementer ud over kapaciteten.
  7. reservere() – Anmoder om, at vektorkapaciteten mindst er tilstrækkelig til at indeholde n elementer.

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

>

omvendt streng i java
>

Produktion

række af array i c
Size : 5 Capacity : 8 Max_Size : 4611686018427387903 Size : 4 Vector is not empty Vector elements are: 1 2 3 4>

Elementadgang

  1. referenceoperatør [g] – Returnerer en reference til elementet ved position 'g' i vektoren
  2. ved (g) – Returnerer en reference til elementet ved position 'g' i vektoren
  3. foran() – Returnerer en reference til det første element i vektoren
  4. tilbage() – Returnerer en reference til det sidste element i vektoren
  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;> }>

    >

    >

    Produktion

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

    Modifikatorer

    1. tildele() – Den tildeler ny værdi til vektorelementerne ved at erstatte de gamle
    2. skub tilbage() – Det skubber elementerne ind i en vektor bagfra
    3. pop_back() – Det bruges til at pop eller fjerne elementer fra en vektor bagfra.
    4. indsæt() – Den indsætter nye elementer før elementet på den angivne position
    5. slette() – Det bruges til at fjerne elementer fra en beholder fra den angivne position eller område.
    6. bytte rundt() – Det bruges til at bytte indholdet af en vektor med en anden vektor af samme type. Størrelser kan variere.
    7. klar() – Det bruges til at fjerne alle elementer i vektorbeholderen
    8. emplace() – Den forlænger beholderen ved at indsætte et nyt element på plads
    9. emplace_back() – Det bruges til at indsætte et nyt element i vektorbeholderen, det nye element tilføjes til slutningen af ​​vektoren

    C++




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

    >

    >

    Produktion

    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>

    Tidskompleksiteten for at udføre forskellige operationer på vektorer er-

    • Random access – konstant O(1)
    • Indsættelse eller fjernelse af elementer i enden – konstant O(1)
    • Indsættelse eller fjernelse af elementer – lineær i afstanden til enden af ​​vektoren O(N)
    • At kende størrelsen – konstant O(1)
    • Ændre størrelsen på vektoren - Lineær O(N)

    Alle medlemsfunktioner af std::vektor

    Følgende er listen over alle medlemsfunktioner i std::vektorklassen i C++:

    Vektor funktion

    Beskrivelse

    skub tilbage()

    Tilføjer et element til slutningen af ​​vektoren.

    pop_back()

    Fjerner det sidste element i vektoren.

    størrelse()

    Returnerer antallet af elementer i vektoren.

    max_size()

    Returnerer det maksimale antal elementer, som vektoren kan indeholde.

    ændre størrelse()

    Ændrer størrelsen af ​​vektoren.

    tom()

    Kontrollerer om vektoren er tom.

    operatør[]

    Får adgang til elementet på en bestemt position.

    på()

    Får adgang til elementet på en bestemt position med grænsekontrol.

    foran()

    Får adgang til det første element i vektoren.

    tilbage()

    Får adgang til det sidste element i vektoren.

    begynde()

    Returnerer en iterator, der peger på det første element i vektoren.

    ende()

    Returnerer en iterator, der peger på elementet forbi slutningen af ​​vektoren.

    rbegin()

    Returnerer en omvendt iterator, der peger på det sidste element i vektoren.

    render()

    Returnerer en omvendt iterator, der peger på det element, der går forud for det første element i vektoren.

    cbegynde

    sonu nigam
    Returnerer const_iterator til begyndelsen

    nogle få

    Returnerer const_iterator til slutningen

    begynde

    Returnerer const_reverse_iterator for at vende begyndelsen

    tro på

    Returnerer const_reverse_iterator for at vende ende

    indsæt()

    Indsætter elementer på en bestemt position i vektoren.

    slette()

    Fjerner elementer fra en bestemt position eller område i vektoren.

    bytte rundt()

    Bytter indholdet af vektoren ud med indholdet af en anden vektor.

    klar()

    Fjerner alle elementer fra vektoren.

    emplace()

    Konstruerer og indsætter et element i vektoren.

    emplace_back()

    Konstruerer og indsætter et element i slutningen af ​​vektoren.

    tildele()

    Tildeler nye værdier til vektorelementerne ved at erstatte de gamle.

    kapacitet()

    Returnerer størrelsen af ​​den lagerplads, der i øjeblikket er allokeret til vektoren.

    reservere()

    Anmoder om, at vektorkapaciteten mindst er tilstrækkelig til at indeholde et specificeret antal elementer.

    shrink_to_fit()

    Reducerer hukommelsesforbrug ved at frigøre ubrugt plads.

    get_allocator

    Returnerer en kopi af allokeringsobjektet, der er knyttet til vektoren.

    Skal læses:

    • Hvordan kontrollerer man, om en vektor indeholder et givet element i C++?
    • Sådan finder du indeks for et givet element i en vektor i C++
    • Sortering af en vektor i C++