Kurs maturalny z języka angielskiego!
kurs-maturalny-jezyk-angielski

PROGRAMOWANIE I ALGORYTMY

Zajęcia maturalne z informatyki
Olimpiada Informatyczna Juniorów
    Prowadzący: Marcin Kasprowicz
  • właściciel serwisu algorytm.edu.pl
  • wrzesień 2024 — start zajęć
  • czytaj więcej

vector::erase


Zasada działania

Metoda erase() usuwa element z dowolnego miejsca z wektorze, przesuwając o jeden w lewo elementy stojące za nim, zmniejszając odpowiednio wielkość wektora. Robi to w czasie liniowym w stosunku do elementów, które musi przesunąć. Do usunięcia danych z wektora wykorzystuje iterator, który należy ustawić na pozycję elementu do usunięcia. Jeśli jest potrzeba usunięcia pierwszej lub ostatniej wartości, możemy skorzystać z metod begin() i end(), które zwracają odpowiednio iterator wskazujący na pierwszzy i ostatni element wektora.

Przykład 1

Zadanie. Wstaw do wektora liczby całkowite: 1 2 3 4 5, następnie usuń liczbę 2 i 4. Wypisz zawartość wektora przed i po usunięciu liczb.

Rozwiązanie
//algorytm.edu.pl
#include<iostream>
#include<vector>
using namespace std;

int main()
{
	vector <int> liczby;
	vector <int>::iterator it;
	
	//wstaw kolejno liczby: 1, 2, 3, 4 i 5 do wektora o nazwie liczby
	liczby.push_back(1);
	liczby.push_back(2);
	liczby.push_back(3);
	liczby.push_back(4);
	liczby.push_back(5);
	
	for(int i=0; i<liczby.size(); i++)
		cout<<liczby[i]<<' ';
	
	cout<<endl;
	
	//ustaw iterator na drugi element wektora
	it = liczby.begin() + 1;
	//usunięcie liczby 2
	liczby.erase (it);
	
	//ustaw iterator na trzeci element wektora
	it = liczby.begin() + 2;
	//usunięcie liczby 4
	liczby.erase (it);
	
	for(int i=0; i<liczby.size(); i++)
		cout<<liczby[i]<<' ';
	
	return 0;
}

Przykład 2

Zadanie. Wstaw do wektora liczby całkowite: 1 2 3 4 5, następnie usuń pierwszą i ostatnią wartość. Wypisz zawartość wektora przed i po usunięciu liczb.

Rozwiązanie
//algorytm.edu.pl
#include<iostream>
#include<vector>
using namespace std;

int main()
{
	vector <int> liczby;
	
	//wstaw kolejno liczby: 1, 2, 3, 4 i 5 do wektora o nazwie liczby
	liczby.push_back(1);
	liczby.push_back(2);
	liczby.push_back(3);
	liczby.push_back(4);
	liczby.push_back(5);
	
	for(int i=0; i<liczby.size(); i++)
		cout<<liczby[i]<<' ';
	
	cout<<endl;
	
	//usunięcie pierwszej liczby
	liczby.erase (liczby.begin());
	
	//usunięcie ostatniej liczby
	liczby.erase (liczby.end());
	
	for(int i=0; i<liczby.size(); i++)
		cout<<liczby[i]<<' ';
	
	return 0;
}