Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Opracował: Piotr DejaVu Szawdyński
Pomógł: malan
Język C++

list::erase

[metoda] Usuwa jeden element lub wiele elementów z kontenera listy występujących na podanej pozycji lub w podanym zakresie.

Składnia

C/C++
#include <list>

namespace std
{
    template < class Type, class Allocator >
    class list
    {
    public:
       
        iterator erase( iterator _Where );
       
        iterator erase( iterator _First, iterator _Last );
       
    };
}

Argumenty

ArgumentOpis
_WhereIterator wskazujący na element, który ma zostać usunięty.
_FirstIterator wskazujący na pierwszy element zakresu od którego elementy mają zostać usunięte z kontenera.
_LastIterator wskazujący na element występujący za ostatnim elementem zakresu do którego elementy mają zostać usunięte z kontenera.

Zwracana wartość

Zwraca iterator wskazujący na pierwszy element występujący za usuniętym elementem bądź zakresem elementów.

W przypadku gdy element znajdujący się na końcu kontenera został usunięty to metoda zwróci iterator wskazujący na ten sam element co metoda » standard C++ » listend.

Opis szczegółowy

Metoda usuwa jeden element lub wiele elementów z kontenera listy występujących na podanej pozycji lub w podanym zakresie.

Złożoność obliczeniowa metody: O(1).

Zagadnienia powiązane

insertWstawia jeden element lub wiele elementów do kontenera listy na określonej pozycji. (metoda)

Przykłady

C/C++
#include <iostream>
#include <list>

int main()
{
    std::list < int > listaLiczb;
    std::list < int >::iterator i, id;
    int index = 0, j = 0, k = 0;
   
    while( j < 11 )
    {
        listaLiczb.push_back(( j++ ) * 5 );
    }
   
    i = listaLiczb.begin();
   
    std::cout << "Elementy listy: " << std::endl;
   
    for( id = listaLiczb.begin(); id != listaLiczb.end(); id++ )
    {
        std::cout << "Element [" << k++<< "]= ";
        std::cout << * id << std::endl;
    }
    k = 0;
   
    std::cout << "Ktory element usunac?" << std::endl;
    std::cin >> index;
   
    while( index-- )
    {
        i++;
    }
   
    listaLiczb.erase( i );
   
    std::cout << "Elementy listy: " << std::endl;
   
    for( id = listaLiczb.begin(); id != listaLiczb.end(); id++ )
    {
        std::cout << "Element [" << k++<< "]= ";
        std::cout << * id << std::endl;
    }
   
    return 0;
}

C/C++
#include <iostream>
#include <list>

int main()
{
    std::list < int > listaLiczb;
    std::list < int >::iterator i1, i2, id;
    int pozycja_od = 0, pozycja_do = 0, j = 0, k = 0;
   
    while( j < 11 )
    {
        listaLiczb.push_back(( j++ ) * 5 );
    }
   
    i1 = i2 = listaLiczb.begin();
   
    std::cout << "Elementy listy: " << std::endl;
   
    for( id = listaLiczb.begin(); id != listaLiczb.end(); id++ )
    {
        std::cout << "Element [" << k++<< "]= ";
        std::cout << * id << std::endl;
    }
    k = 0;
   
    std::cout << "Podaj przedzial, ktory chcesz usunac:" << std::endl;
    std::cin >> pozycja_od >> pozycja_do;
   
    while( pozycja_od-- )
    {
        i1++;
    }
    while(( pozycja_do-- ) >= 0 )
    {
        i2++;
    }
   
    // Usuwanie wskazanego przedziału
    listaLiczb.erase( i1, i2 );
   
    std::cout << "Elementy listy: " << std::endl;
   
    for( id = listaLiczb.begin(); id != listaLiczb.end(); id++ )
    {
        std::cout << "Element [" << k++<< "]= ";
        std::cout << * id << std::endl;
    }
   
    return 0;
}

Linki zewnętrzne