Vectoren zijn hetzelfde als dynamische arrays met de mogelijkheid om de grootte automatisch aan te passen wanneer een element wordt ingevoegd of verwijderd, waarbij de opslag ervan automatisch door de container wordt afgehandeld. Vectorelementen worden in aaneengesloten opslag geplaatst, zodat ze toegankelijk en doorlopen kunnen worden met behulp van iterators. Bij vectoren worden gegevens aan het einde ingevoegd. Het invoegen aan het einde kost verschillende tijd, omdat de array soms moet worden uitgebreid. Het verwijderen van het laatste element kost slechts een constante tijd omdat er geen formaatwijziging plaatsvindt. Het invoegen en wissen aan het begin of in het midden is lineair in de tijd.
Wat is std::vector in C++?
std::vector in C++ is de klassensjabloon die de vectorcontainer en zijn lidfuncties bevat. Het wordt gedefinieerd binnen de header-bestand. De lidfuncties van de klasse std::vector bieden verschillende functionaliteiten aan vectorcontainers.
Syntaxis voor het declareren van vector in C++
std::vector vectorName;>
waarbij het gegevenstype het gegevenstype van elk element van de vector is. U kunt de std:: verwijderen als u de std-naamruimte al hebt gebruikt.
Initialisatie van Vector in C++
We kunnen een vector op de volgende manieren initialiseren:
1. Initialisatie met behulp van lijst
Deze initialisatie gebeurt met een declaratie. Hier geven we de lijst met elementen door aan de vectorconstructor om een vector te maken met de opgegeven elementen.
vector name({ value1, value2, value3 .... });>
2. Initialisatie Met één enkele waarde
Deze initialisatie gebeurt ook met declaratie. Hier specificeren we de grootte van de vector en initialiseren we vervolgens elk element van de vector met de waarde.
vector name(size, value);>
3. Initialisatie vanaf een andere vector
Deze initialisatie wordt gebruikt om een vector te creëren die een exacte kopie is van other_vec.
vector name(other_vec);>
Hieronder vindt u enkele veelgebruikte lidfuncties van de std::vector-klasse:
Iteratoren
- beginnen() – Retourneert een iterator die naar het eerste element in de vector wijst
- einde() – Retourneert een iterator die verwijst naar het theoretische element dat volgt op het laatste element in de vector
- rbegin() – Retourneert een omgekeerde iterator die naar het laatste element in de vector wijst (omgekeerd begin). Het gaat van het laatste naar het eerste element
- veroorzaken() – Retourneert een omgekeerde iterator die verwijst naar het theoretische element dat voorafgaat aan het eerste element in de vector (beschouwd als omgekeerd uiteinde)
- cbegin() – Retourneert een constante iterator die naar het eerste element in de vector wijst.
- een paar() – Retourneert een constante iterator die verwijst naar het theoretische element dat volgt op het laatste element in de vector.
- crbegin() – Retourneert een constante omgekeerde iterator die naar het laatste element in de vector wijst (omgekeerd begin). Het gaat van het laatste naar het eerste element
- crend() – Retourneert een constante omgekeerde iterator die verwijst naar het theoretische element dat voorafgaat aan het eerste element in de vector (beschouwd als omgekeerd uiteinde)
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;> }> |
>
>Uitvoer
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>
Capaciteit
- maat() – Geeft het aantal elementen in de vector terug.
- max_grootte() – Geeft het maximale aantal elementen terug dat de vector kan bevatten.
- capaciteit() – Retourneert de grootte van de opslagruimte die momenteel aan de vector is toegewezen, uitgedrukt als aantal elementen.
- formaat wijzigen(n) – Wijzigt het formaat van de container zodat deze ‘n’-elementen bevat.
- leeg() – Geeft terug of de container leeg is.
- krimpen_tot_fit() – Verkleint de capaciteit van de container zodat deze past bij de grootte ervan en vernietigt alle elementen buiten de capaciteit.
- reserveren() – Verzoekt dat de vectorcapaciteit minimaal voldoende is om n elementen te bevatten.
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;> }> |
>
maat latex lettertype
>Uitvoer
Size : 5 Capacity : 8 Max_Size : 4611686018427387903 Size : 4 Vector is not empty Vector elements are: 1 2 3 4>
Toegang tot elementen
- referentie-operator [g] – Geeft een verwijzing terug naar het element op positie ‘g’ in de vector
- bij(g) – Geeft een verwijzing terug naar het element op positie ‘g’ in de vector
- voorkant() – Retourneert een verwijzing naar het eerste element in de vector
- rug() – Retourneert een verwijzing naar het laatste element in de vector
- 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;>
}>
>
>
UitvoerReference operator [g] : g1[2] = 30 at : g1.at(4) = 50 front() : g1.front() = 10 back() : g1.back() = 100 The first element is 10>
Modificatoren
- toewijzen() – Het kent nieuwe waarde toe aan de vectorelementen door oude te vervangen
- terugduwen() – Het duwt de elementen vanaf de achterkant in een vector
- pop_back() – Het wordt gebruikt om elementen vanaf de achterkant uit een vector te laten springen of te verwijderen.
- invoegen() – Het voegt nieuwe elementen in vóór het element op de opgegeven positie
- wissen() – Het wordt gebruikt om elementen uit een container te verwijderen vanaf de opgegeven positie of bereik.
- ruil() – Het wordt gebruikt om de inhoud van een vector te wisselen met een andere vector van hetzelfde type. Maten kunnen afwijken.
- duidelijk() – Het wordt gebruikt om alle elementen van de vectorcontainer te verwijderen
- plaats() – Het verlengt de container door een nieuw element op zijn plaats te plaatsen
- emplace_back() – Het wordt gebruikt om een nieuw element in de vectorcontainer in te voegen, het nieuwe element wordt aan het einde van de vector toegevoegd
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); uit<< ' 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] << ' '; }> >
heap en heap sorteren
>
UitvoerThe 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>
De tijdscomplexiteit voor het uitvoeren van verschillende bewerkingen op vectoren is-
- Willekeurige toegang – constante O(1)
- Inbrengen of verwijderen van elementen aan het einde – constante O(1)
- Inbrengen of verwijderen van elementen – lineair in de afstand tot het einde van de vector O(N)
- De maat kennen – constante O(1)
- Het formaat van de vector wijzigen - Lineair O(N)
Alle lidfuncties van std::vector
Hieronder volgt de lijst met alle lidfuncties van de std::vector-klasse in C++:
Vectorfunctie
Beschrijving
Voegt een element toe aan het einde van de vector. Verwijdert het laatste element van de vector. Geeft het aantal elementen in de vector terug. max_grootte()
Retourneert het maximale aantal elementen dat de vector kan bevatten. formaat wijzigen()
Verandert de grootte van de vector. Controleert of de vector leeg is. exploitant[]
Geeft toegang tot het element op een specifieke positie. bij()
Geeft toegang tot het element op een specifieke positie, met grenscontrole. voorkant()
Geeft toegang tot het eerste element van de vector. rug()
Geeft toegang tot het laatste element van de vector. beginnen()
Retourneert een iterator die naar het eerste element van de vector wijst. einde()
Retourneert een iterator die naar het voorbij-het-eind-element van de vector wijst. rbegin()
Retourneert een omgekeerde iterator die naar het laatste element van de vector wijst. veroorzaken()
Retourneert een omgekeerde iterator die verwijst naar het element dat voorafgaat aan het eerste element van de vector. cbegin
Geeft const_iterator terug naar het begin een paar
Geeft const_iterator terug naar end begin
Geeft const_reverse_iterator terug naar het omgekeerde begin geloven
Retourneert const_reverse_iterator naar het omgekeerde einde java dubbel naar string
Voegt elementen in op een specifieke positie in de vector. Verwijdert elementen uit een specifieke positie of bereik in de vector. ruil()
Wisselt de inhoud van de vector om met die van een andere vector. Verwijdert alle elementen uit de vector. plaats()
Construeert en voegt een element in de vector in. emplace_back()
Construeert en voegt een element in aan het einde van de vector. toewijzen()
Wijst nieuwe waarden toe aan de vectorelementen door oude waarden te vervangen. capaciteit()
Retourneert de grootte van de opslagruimte die momenteel aan de vector is toegewezen. reserveren()
Verzoekt dat de vectorcapaciteit ten minste voldoende is om een bepaald aantal elementen te bevatten. krimpen_tot_fit()
Vermindert het geheugengebruik door ongebruikte ruimte vrij te maken. get_allocator
Retourneert een kopie van het allocatorobject dat aan de vector is gekoppeld. Moet lezen:
- Hoe controleer ik of een vector een bepaald element bevat in C++?
- Hoe de index van een bepaald element in een vector in C++ te vinden
- Een vector sorteren in C++