logo

vector erase() in clear() v C++

Predpogoj: Vektor v C++

Vektorji so enaki kot dinamični nizi z zmožnostjo samodejnega spreminjanja velikosti, ko je element vstavljen ali izbrisan, pri čemer njihovo shranjevanje samodejno obravnava vsebnik.



vektor::počisti()

The počisti() funkcija se uporablja za odstranitev vseh elementov vektorskega vsebnika, s čimer postane velikost 0.

Sintaksa:

 vector_name .clear()>

Parametri: Noben parameter ni posredovan.



rezultat: Vsi elementi vektorja so odstranjeni (ali uničeni).

primer:

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

>

>

Izhod

 No Output>

Časovna zapletenost: O(N)
Pomožni prostor: O(1)
Vsi elementi so uničeni eden za drugim.

Napake in izjeme

  1. Nima nobene izjeme.
  2. Ko je parameter posredovan, prikaže napako.

vektor::izbriši()

izbrisati() funkcija se uporablja za odstranjevanje elementov iz vsebnika z podanega položaja ali obsega.

Sintaksa:

 vector_name . erase( position ) ; for deletion at specific position vector_name . erase( starting_position , ending_position ) ; // for deletion in range>

Parametri:

  • Položaj elementa, ki ga želite odstraniti v obliki iteratorja.
  • Obseg je določen z uporabo začetnih in končnih iteratorjev.

rezultat: Elementi se odstranijo iz določenega položaja vsebnika.

primer:

 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>

Odstranjevanje an element iz a določen položaj

primer:

C++




// C++ program to demonstrate> // working of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>mojvektor{ 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;> }>

>

>

Izhod

umetna inteligenca in inteligentni agenti
 2 3 4 5>

Časovna zapletenost: O(N)
Pomožni prostor: O(1)

Odstranjevanje določenega elementa

Če želite izbrisati določen element na podlagi njegove vrednosti, moramo najprej vedeti o njegovem položaju in ga lahko najdemo s funkcijo find().

primer:

C++




// C++ program to remove element based on its value> #include> using> namespace> std;> int> main()> {> >vector<>int>>vektor = { 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;> }>

>

>

Izhod

vector before deleting 1 2 3 3 4 5 Vector after deleting valueToBeDeleted 1 2 3 4 5>

Odstranjevanje elementov znotraj obsega

C++




// C++ program to demonstrate> // Implementation of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>mojvektor{ 1, 2, 3, 4, 5 };> >vector<>int>>::iterator 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;> }>

>

>

Izhod

 4 5>

Časovna zapletenost: O(N)
Pomožni prostor: O(1)

Odstranjevanje elementov vektorskega para

primer:

C++




#include> using> namespace> std;> // Function to print vector pair elements> void> print(vectorint, string>>& stvar) { cout<< '['; for (int i = 0; i cout << '{' << vec[i].first << ',' << vec[i].second << '}'; if (i cout << ', '; } cout << ']' << endl; } int main() { vectorint, string>> x = { { 1, 'jabolko' }, { 2, 'banana' }, { 3, 'češnja' }, { 4, 'Guava' } }; // Odstrani element na položaju 1 (indeks 0) x.erase(x.begin()); natisni (x); // Natisni [{2,banana}, {3,češnja}, {4,Guava}] // Odstrani elemente na pozicijah 0 in 1 (indeksa 0 // in 1) x.erase(x.begin(), x.begin() + 2); natisni (x); // Natisni [{4,Guava}] // Počisti vektor x.clear(); natisni (x); // Ne natisni ničesar (samo prazni oklepaji) return 0; } // To kodo je prispeval Susobhan Akhuli>

>

>

Izhod

[{2,banana}, {3,cherry}, {4,Guava}] [{4,Guava}] []>

Časovna zapletenost: O(N)
Pomožni prostor: O(1)

Napake in izjeme

  1. Nima garancije za izjeme, če je položaj veljaven.
  2. Drugače prikazuje nedefinirano vedenje.

Aplikacija

Podan je seznam celih števil, odstranite vse sode elemente iz vektorja in natisnite vektor.

Vnos:

1, 2, 3, 4, 5, 6, 7, 8, 9>

Izhod:

1 3 5 7 9>

Pojasnilo: 2, 4, 6 in 8, ki so sodi in izbrisani iz vektorja

Algoritem

  1. Zaženite zanko na velikost vektorja.
  2. Preverite, ali je element na vsakem položaju deljiv z 2, če je odgovor da, odstranite element in zmanjšajte iterator.
  3. Natisnite končni vektor.

Spodnji program izvaja zgornji pristop.

C++




// C++ program to demonstrate> // Application of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>mojvektor{ 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;> }>

>

>

Izhod

 1 3 5 7 9>

Časovna zapletenost: O(N) v najslabšem primeru, ker brisanje traja linearno.

clear() proti erase(), kdaj uporabiti kaj?

počisti() odstrani vse elemente iz vektorskega vsebnika, tako da je njegova velikost 0. Vsi elementi vektorja so odstranjeni z počisti() funkcijo.

izbrisati() po drugi strani pa se uporablja za odstranjevanje določenih elementov iz vsebnika ali niza elementov iz vsebnika, s čimer se zmanjša njegova velikost za število odstranjenih elementov.