Priekšnosacījums: Vektors C++ valodā
Vektori ir tādi paši kā dinamiskie masīvi ar iespēju automātiski mainīt savu izmēru, kad elements tiek ievietots vai dzēsts, un konteiners tos apstrādā automātiski.
vektors::clear()
The skaidrs () funkcija tiek izmantota, lai noņemtu visus vektora konteinera elementus, tādējādi padarot to par 0.
Sintakse:
vector_name .clear()>
Parametri: Neviens parametrs netiek nodots.
Rezultāts: Visi vektora elementi tiek noņemti (vai iznīcināti).
Piemērs:
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> >mansvektors;> > 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;> }> |
>
>
Izvade
No Output>
Laika sarežģītība: O(N)
Palīgtelpa: O(1)
Visi elementi tiek iznīcināti pa vienam.
Kļūdas un izņēmumi
- Tam nav izņēmuma metiena garantija.
- Tas parāda kļūdu, kad parametrs tiek nodots.
vektors::dzēst()
dzēst () funkcija tiek izmantota, lai noņemtu elementus no konteinera no norādītās pozīcijas vai diapazona.
Sintakse:
vector_name . erase( position ) ; for deletion at specific position vector_name . erase( starting_position , ending_position ) ; // for deletion in range>
Parametri:
- Noņemamā elementa pozīcija iteratora formā.
- Diapazons tiek norādīts, izmantojot sākuma un beigu iteratorus.
Rezultāts: Elementi tiek noņemti no norādītās konteinera pozīcijas.
Piemērs:
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>
Noņemšana an elements no a īpaša pozīcija
Piemērs:
C++
// C++ program to demonstrate> // working of erase() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >mansvektors{ 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;> }> |
>
>Izvade
nolūks nodoms
2 3 4 5>
Laika sarežģītība: O(N)
Palīgtelpa: O(1)
Konkrēta elementa noņemšana
Lai izdzēstu noteiktu elementu, pamatojoties uz tā vērtību, vispirms mums ir jāzina par tā atrašanās vietu un mēs varam to atrast, izmantojot funkciju find()
Piemērs:
C++
// C++ program to remove element based on its value> #include> using> namespace> std;> int> main()> {> > vector<> int> >vektors = {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;> }> |
>
>Izvade
vector before deleting 1 2 3 3 4 5 Vector after deleting valueToBeDeleted 1 2 3 4 5>
Elementu noņemšana diapazonā
C++
// C++ program to demonstrate> // Implementation of erase() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >mansvektors{ 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;> }> |
>
>Izvade
4 5>
Laika sarežģītība: O(N)
Palīgtelpa: O(1)
Vektoru pāru elementu noņemšana
Piemērs:
C++
#include> using> namespace> std;> // Function to print vector pair elements> void> print(vectorint, string>>& lieta) { cout<< '['; for (int i = 0; i cout << '{' << vec[i].first << ',' << vec[i].second << '}'; if (i cout << ', '; } cout << ']' << endl; } int main() { vectorint, string>> x = { { 1, 'ābols' }, { 2, 'banāns' }, { 3, 'ķirsis' }, { 4, 'Gvajava' } }; // Noņemt elementu 1. pozīcijā (indekss 0) x.erase(x.begin()); drukāt(x); // Drukāt [{2,banāns}, {3,ķirsis}, {4,Gvajava}] // Noņemiet elementus 0 un 1 pozīcijās (indeksi 0 // un 1) x.erase(x.begin(), x.begin() + 2); drukāt(x); // Drukāt [{4,Guava}] // Notīrīt vektoru x.clear(); drukāt(x); // Nedrukā neko (tikai tukšas iekavas) return 0; } // Šo kodu ir sagatavojis Susobhan Akhuli> |
>
>Izvade
[{2,banana}, {3,cherry}, {4,Guava}] [{4,Guava}] []>
Laika sarežģītība: O(N)
Palīgtelpa: O(1)
Kļūdas un izņēmumi
- Tai nav izņēmuma metiena garantijas, ja pozīcija ir derīga.
- Citādi parāda nedefinētu uzvedību.
Pieteikums
Ņemot vērā veselo skaitļu sarakstu, noņemiet visus pāra elementus no vektora un izdrukājiet vektoru.
Ievade:
1, 2, 3, 4, 5, 6, 7, 8, 9>
Izvade:
1 3 5 7 9>
Paskaidrojums: 2, 4, 6 un 8, kas ir pāra un izdzēsti no vektora
Algoritms
- Izpildiet cilpu līdz vektora izmēram.
- Pārbaudiet, vai elements katrā pozīcijā dalās ar 2, ja jā, noņemiet elementu un samaziniet iteratoru.
- Izdrukājiet galīgo vektoru.
Tālāk sniegtā programma īsteno iepriekš minēto pieeju.
C++
// C++ program to demonstrate> // Application of erase() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >mansvektors{ 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;> }> |
>
>Izvade
1 3 5 7 9>
Laika sarežģītība: O(N) sliktākajā gadījumā, jo dzēšanai nepieciešams lineārs laiks.
clear() vs erase(), kad ko lietot?
skaidrs () noņem visus elementus no vektora konteinera, tādējādi padarot tā izmēru 0. Visi vektora elementi tiek noņemti, izmantojot skaidrs () funkciju.
dzēst () no otras puses, funkcija tiek izmantota, lai noņemtu konkrētus elementus no konteinera vai virkni elementu no konteinera, tādējādi samazinot tā izmēru par noņemto elementu skaitu.