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
- Nima nobene izjeme.
- 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
- Nima garancije za izjeme, če je položaj veljaven.
- 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
- Zaženite zanko na velikost vektorja.
- Preverite, ali je element na vsakem položaju deljiv z 2, če je odgovor da, odstranite element in zmanjšajte iterator.
- 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.