logo

Vektor i C++ STL

Vektorer är samma som dynamiska arrayer med möjlighet att ändra storlek på sig själva automatiskt när ett element infogas eller tas bort, och deras lagring hanteras automatiskt av behållaren. Vektorelement placeras i angränsande lagring så att de kan nås och passeras med iteratorer. I vektorer infogas data i slutet. Att infoga i slutet tar differentiell tid, eftersom arrayen ibland kan behöva utökas. Att ta bort det sista elementet tar bara konstant tid eftersom ingen storleksändring sker. Att infoga och radera i början eller i mitten är linjär i tiden.

Vad är std::vektor i C++?

std::vektor i C++ är klassmallen som innehåller vektorbehållaren och dess medlemsfunktioner. Det definieras inuti header-fil. Medlemsfunktionerna i klassen std::vector tillhandahåller olika funktioner till vektorbehållare.



Syntax för att deklarera vektor i C++

  std::vector   vectorName;>

där datatypen är typen av data för varje element i vektorn. Du kan ta bort std:: om du redan har använt std-namnrymden.

Initiering av Vector i C++

Vi kan initiera en vektor på följande sätt:

1. Initiering med hjälp av lista

Denna initiering görs med en deklaration. Här skickar vi listan med element till vektorkonstruktorn för att skapa en vektor med de angivna elementen.



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

2. Initialisering Med ett enda värde

Denna initialisering görs också med deklaration. Här anger vi storleken på vektorn och initierar sedan varje element i vektorn med värdet.

  vector   name(size, value);>

3. Initiering Från En annan Vektor

Denna initialisering används för att skapa en vektor som är en exakt kopia av other_vec.

  vector   name(other_vec);>

Några vanligt använda medlemsfunktioner i std::vektorklassen är skrivna nedan:



Iteratorer

  1. Börja() – Returnerar en iterator som pekar på det första elementet i vektorn
  2. slutet() – Returnerar en iterator som pekar på det teoretiska elementet som följer efter det sista elementet i vektorn
  3. rbegin() – Returnerar en omvänd iterator som pekar på det sista elementet i vektorn (omvänd början). Det rör sig från det sista till det första elementet
  4. framställa() – Returnerar en omvänd iterator som pekar på det teoretiska elementet som föregår det första elementet i vektorn (betraktas som omvänd slutet)
  5. cbegin() – Returnerar en konstant iterator som pekar på det första elementet i vektorn.
  6. några() – Returnerar en konstant iterator som pekar på det teoretiska elementet som följer efter det sista elementet i vektorn.
  7. crbegin() – Returnerar en konstant omvänd iterator som pekar på det sista elementet i vektorn (omvänd början). Det rör sig från det sista till det första elementet
  8. crend() – Returnerar en konstant omvänd iterator som pekar på det teoretiska elementet som föregår det första elementet i vektorn (betraktas som omvänd slut)

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. storlek() – Returnerar antalet element i vektorn.
  2. max_size() – Returnerar det maximala antalet element som vektorn kan hålla.
  3. kapacitet() – Returnerar storleken på det lagringsutrymme som för närvarande allokerats till vektorn uttryckt som antal element.
  4. ändra storlek (n) – Ändrar storleken på behållaren så att den innehåller 'n' element.
  5. tömma() – Returnerar om behållaren är tom.
  6. krymp för att passa() – Minskar behållarens kapacitet för att passa dess storlek och förstör alla element utöver kapaciteten.
  7. boka() – Begär att vektorkapaciteten är minst tillräcklig för att innehålla 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;> }>

>

sträng till char i java
>

Produktion

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

Elementåtkomst

  1. referensoperatör [g] – Returnerar en referens till elementet vid position 'g' i vektorn
  2. vid (g) – Returnerar en referens till elementet vid position 'g' i vektorn
  3. främre() – Returnerar en referens till det första elementet i vektorn
  4. tillbaka() – Returnerar en referens till det sista elementet i vektorn
  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>

    Modifierare

    1. tilldela() – Den tilldelar nytt värde till vektorelementen genom att ersätta gamla
    2. trycka tillbaka() – Den trycker in elementen i en vektor bakifrån
    3. pop_back() – Den används för att poppa eller ta bort element från en vektor bakifrån.
    4. Föra in() – Den infogar nya element före elementet på den angivna positionen
    5. radera() – Den används för att ta bort element från en behållare från den angivna positionen eller området.
    6. byta() – Den används för att byta ut innehållet i en vektor med en annan vektor av samma typ. Storlekarna kan skilja sig åt.
    7. klar() – Den används för att ta bort alla element i vektorbehållaren
    8. emplace() – Den förlänger behållaren genom att sätta in ett nytt element på plats
    9. emplace_back() – Det används för att infoga ett nytt element i vektorbehållaren, det nya elementet läggs till i slutet av vektorn

    C++

    alisa manyonok




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

    Tidskomplexiteten för att utföra olika operationer på vektorer är-

    • Random access – konstant O(1)
    • Insättning eller borttagning av element i slutet – konstant O(1)
    • Insättning eller borttagning av element – ​​linjärt i avståndet till slutet av vektorn O(N)
    • Att känna till storleken – konstant O(1)
    • Ändra storlek på vektorn- Linjär O(N)

    Alla medlemsfunktioner i std::vector

    Följande är listan över alla medlemsfunktioner i std::vektorklassen i C++:

    Vektor Funktion

    Beskrivning

    trycka tillbaka()

    Lägger till ett element i slutet av vektorn.

    pop_back()

    Tar bort det sista elementet i vektorn.

    storlek()

    Returnerar antalet element i vektorn.

    max_size()

    Returnerar det maximala antalet element som vektorn kan hålla.

    ändra storlek()

    Ändrar storleken på vektorn.

    tömma()

    Kontrollerar om vektorn är tom.

    operatör[]

    Åtkomst till elementet på en specifik position.

    på()

    Åtkomst till elementet på en specifik position, med gränskontroll.

    främre()

    Åtkomst till det första elementet i vektorn.

    tillbaka()

    Åtkomst till det sista elementet i vektorn.

    Börja()

    Returnerar en iterator som pekar på det första elementet i vektorn.

    slutet()

    Returnerar en iterator som pekar på elementet förbi slutet av vektorn.

    rbegin()

    Returnerar en omvänd iterator som pekar på det sista elementet i vektorn.

    framställa()

    Returnerar en omvänd iterator som pekar på elementet som föregår det första elementet i vektorn.

    cbörja

    Returnerar const_iterator till början

    några

    Returnerar const_iterator till slutet

    börja

    Returnerar const_reverse_iterator för att vända början

    tro

    Returnerar const_reverse_iterator för att vända slutet

    Föra in()

    Infogar element på en specifik position i vektorn.

    radera()

    Tar bort element från en specifik position eller område i vektorn.

    byta()

    Byter ut innehållet i vektorn med innehållet i en annan vektor.

    klar()

    Tar bort alla element från vektorn.

    emplace()

    java bubbla sortera
    Konstruerar och infogar ett element i vektorn.

    emplace_back()

    Konstruerar och infogar ett element i slutet av vektorn.

    tilldela()

    Tilldelar nya värden till vektorelementen genom att ersätta gamla.

    kapacitet()

    Returnerar storleken på det lagringsutrymme som för närvarande allokerats till vektorn.

    boka()

    Begär att vektorkapaciteten är minst tillräcklig för att innehålla ett specificerat antal element.

    krymp för att passa()

    Minskar minnesanvändning genom att frigöra oanvänt utrymme.

    get_allocator

    Returnerar en kopia av allokeringsobjektet som är associerat med vektorn.

    Måste läsas:

    • Hur kontrollerar man om en vektor innehåller ett givet element i C++?
    • Hur man hittar index för ett givet element i en vektor i C++
    • Sortera en vektor i C++