Būtina sąlyga: Vektorius C++
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.
vektorius::clear()
The aišku () Funkcija naudojama pašalinti visus vektoriaus konteinerio elementus, todėl jo dydis yra 0.
Sintaksė:
vector_name .clear()>
Parametrai: Neperduodami jokie parametrai.
Rezultatas: Visi vektoriaus elementai pašalinami (arba sunaikinami).
Pavyzdys:
Input: myvector= {1, 2, 3, 4, 5}; myvector.clear(); Output: myvector= {}>
C++
// C++ program to demonstrate> // Implementation of clear() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >myvector;> > myvector.push_back(1);> > myvector.push_back(2);> > myvector.push_back(3);> > myvector.push_back(4);> > myvector.push_back(5);> > // Vector becomes 1, 2, 3, 4, 5> > myvector.clear();> > // vector becomes empty> > // Printing the vector> > for> (> auto> it = myvector.begin(); it != myvector.end();> > ++it)> > cout <<> ' '> << *it;> > return> 0;> }> |
>
>
Išvestis
No Output>
Laiko sudėtingumas: O(N)
Pagalbinė erdvė: O(1)
Visi elementai sunaikinami po vieną.
Klaidos ir išimtys
- Jai netaikoma metimo garantija.
- Perduodant parametrą rodoma klaida.
vektorius::trinti()
ištrinti () Funkcija naudojama elementams iš konteinerio pašalinti iš nurodytos padėties arba diapazono.
Sintaksė:
vector_name . erase( position ) ; for deletion at specific position vector_name . erase( starting_position , ending_position ) ; // for deletion in range>
Parametrai:
- Pašalinamo elemento padėtis iteratoriaus pavidalu.
- Diapazonas nurodomas naudojant pradžios ir pabaigos iteratorius.
Rezultatas: Elementai pašalinami iš nurodytos konteinerio padėties.
Pavyzdys:
Input : myvector= {1, 2, 3, 4, 5}, iterator= myvector.begin()+2 myvector.erase(iterator); Output : 1, 2, 4, 5 Input : myvector= {1, 2, 3, 4, 5, 6, 7, 8}, iterator1= myvector.begin()+3, iterator2= myvector.begin()+6 myvector.erase(iterator1, iterator2); Output : 1, 2, 3, 7, 8>
Pašalinimas an elementas iš a tam tikra padėtis
Pavyzdys:
C++
// C++ program to demonstrate> // working of erase() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >myvector{ 1, 2, 3, 4, 5 };> > vector<> int> >::iterator it;> > it = myvector.begin();> > myvector.erase(it);> > // Printing the Vector> > for> (> auto> it = myvector.begin(); it != myvector.end();> > ++it)> > cout <<> ' '> << *it;> > return> 0;> }> |
>
>Išvestis
Bourne-gain apvalkalas
2 3 4 5>
Laiko sudėtingumas: O(N)
Pagalbinė erdvė: O(1)
Tam tikro elemento pašalinimas
Norėdami ištrinti tam tikrą elementą pagal jo vertę, pirmiausia turime žinoti apie jo padėtį ir galime jį rasti naudodami funkciją find()
Pavyzdys:
C++
// C++ program to remove element based on its value> #include> using> namespace> std;> int> main()> {> > vector<> int> >vektorius = { 1, 2, 3, 3, 4, 5 };> > cout <<> 'vector before deleting '> << endl;> > for> (> auto> element : vector) {> > cout << element <<> ' '> ;> > }> > // finding the position of the element in the vector> > int> valueToBeDeleted = 3;> > auto> it = find(vector.begin(), vector.end(),> > valueToBeDeleted);> > if> (it != vector.end()) {> > vector.erase(it);> > }> > cout << endl> > <<> 'Vector after deleting valueToBeDeleted '> > << endl;> > for> (> auto> element : vector) {> > cout << element <<> ' '> ;> > }> > cout << endl;> > return> 0;> }> |
>
>Išvestis
vector before deleting 1 2 3 3 4 5 Vector after deleting valueToBeDeleted 1 2 3 4 5>
Elementų pašalinimas diapazone
C++
// C++ program to demonstrate> // Implementation of erase() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >myvector{ 1, 2, 3, 4, 5 };> > vector<> int> >::iteratorius it1, it2;> > it1 = myvector.begin();> > it2 = myvector.end();> > it2--;> > it2--;> > myvector.erase(it1, it2);> > // Printing the Vector> > for> (> auto> it = myvector.begin(); it != myvector.end();> > ++it)> > cout <<> ' '> << *it;> > return> 0;> }> |
>
>Išvestis
4 5>
Laiko sudėtingumas: O(N)
Pagalbinė erdvė: O(1)
Pašalinami vektorių poros elementai
Pavyzdys:
C++
#include> using> namespace> std;> // Function to print vector pair elements> void> print(vectorint, string>>& dalykas) { cout<< '['; for (int i = 0; i cout << '{' << vec[i].first << ',' << vec[i].second << '}'; if (i cout << ', '; } cout << ']' << endl; } int main() { vectorint, string>> x = { { 1, 'obuolys' }, { 2, 'bananas' }, { 3, 'vyšnia' }, { 4, 'Gvajava' } }; // Pašalinti elementą 1 pozicijoje (indeksas 0) x.erase(x.begin()); spausdinti(x); // Spausdinti [{2,banana}, {3,cherry}, {4,Guava}] // Pašalinti elementus 0 ir 1 pozicijose (indeksai 0 // ir 1) x.erase(x.begin(), x.begin() + 2); spausdinti(x); // Spausdinti [{4,Guava}] // Išvalyti vektorių x.clear(); spausdinti(x); // Nieko nespausdinti (tik tušti skliaustai) return 0; } // Šį kodą sukūrė Susobhan Akhuli> |
>
>Išvestis
[{2,banana}, {3,cherry}, {4,Guava}] [{4,Guava}] []>
Laiko sudėtingumas: O(N)
Pagalbinė erdvė: O(1)
Klaidos ir išimtys
- Ji neturi išimties metimo garantijos, jei pozicija galioja.
- Kitaip rodo neapibrėžtą elgesį.
Taikymas
Pateikiame sveikųjų skaičių sąrašą, pašalinkite visus lyginius elementus iš vektoriaus ir atspausdinkite vektorių.
Įvestis:
1, 2, 3, 4, 5, 6, 7, 8, 9>
Išvestis:
1 3 5 7 9>
Paaiškinimas: 2, 4, 6 ir 8, kurie yra lygūs ir ištrinami iš vektoriaus
Algoritmas
- Vykdykite kilpą iki vektoriaus dydžio.
- Patikrinkite, ar elementas kiekvienoje padėtyje dalijasi iš 2, jei taip, pašalinkite elementą ir sumažinkite iteratorių.
- Išspausdinkite galutinį vektorių.
Žemiau pateikta programa įgyvendina aukščiau pateiktą metodą.
C++
// C++ program to demonstrate> // Application of erase() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >mano vektorius{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };> > for> (> auto> i = myvector.begin(); i != myvector.end();> > ++i) {> > if> (*i % 2 == 0) {> > myvector.erase(i);> > i--;> > }> > }> > // Printing the vector> > for> (> auto> it = myvector.begin(); it != myvector.end();> > ++it)> > cout <<> ' '> << *it;> > return> 0;> }> |
>
>Išvestis
1 3 5 7 9>
Laiko sudėtingumas: O(N) blogiausiu atveju, nes ištrynimas trunka linijinį laiką.
clear() vs erase(), kada ką naudoti?
aišku () pašalina visus elementus iš vektoriaus konteinerio, todėl jo dydis yra 0. Visi vektoriaus elementai pašalinami naudojant aišku () funkcija.
ištrinti () Kita vertus, funkcija naudojama norint pašalinti konkrečius elementus iš konteinerio arba elementų diapazoną iš konteinerio, taip sumažinant jo dydį pašalintų elementų skaičiumi.