Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Opracował: Piotr DejaVu Szawdyński
Biblioteki C/C++

ptr_multiset

[szablon klasy] Kontener reprezentujący zrównoważone drzewo binarne z powtórzeniami, którego elementami są wskaźniki danego typu.

Składnia

C/C++
#include <boost/ptr_container/ptr_set.hpp>

namespace boost
{
    template
    <
    class Key,
    class Compare = std::less < Key >,
    class CloneAllocator = heap_clone_allocator,
    class Allocator = std::allocator < void *>
    >
    class ptr_multiset
        : public ptr_multiset_adapter < Key, std::multiset < void *, void_ptr_indirect_fun < Compare, Key >, Allocator >, CloneAllocator, true >
    {
    };
}

Opis szczegółowy

Kontener ptr_multiset reprezentuje zrównoważone drzewo binarne z powtórzeniami, którego elementami są wskaźniki danego typu. Kontener ptr_multiset jest odpowiednikiem kontenera std::multiset. Istotną różnicą między kontenerami jest fakt, że kontener ptr_multiset przyjmuje wskaźniki na obiekty, zamiast obiektów. Obiekty dodane do kontenera są zwalniane za pomocą operatora
delete
.

Przykład

C/C++
#include <boost/ptr_container/ptr_set.hpp>
#include <cstdio>

class CLiczba
{
public:
    CLiczba( int iLiczba )
        : m_iLiczba( iLiczba )
    { printf( "CLiczba(%d)\n", iLiczba ); }
    ~CLiczba() { printf( "~CLiczba()//m_iLiczba = %d\n", m_iLiczba ); }
    operator int() const { return m_iLiczba; };
private:
    int m_iLiczba;
};

typedef CLiczba TypeT;
typedef boost::ptr_multiset < TypeT > ContainerT;

void wypisz( const ContainerT & v )
{
    printf( "Elementy kontenera (rozmiar = %d):\n", v.size() );
    for( ContainerT::const_iterator i = v.begin(); i != v.end(); i++ )
         printf( "\t%d (0x%x)\n", * i, &* i );
   
}

int main()
{
    ContainerT kontener;
    kontener.insert( new TypeT( 123 ) );
    kontener.insert( new TypeT( 345 ) );
    kontener.insert( new TypeT( 123 ) );
    wypisz( kontener );
    kontener.clear();
    kontener.insert( new TypeT( 777 ) );
    wypisz( kontener );
    return 0;
}
Standardowe wyjście programu:
CLiczba(123)
CLiczba(345)
CLiczba(123)
Elementy kontenera (rozmiar = 3):
        123 (0x35ea0)
        123 (0x339c0)
        345 (0x33990)
~CLiczba()//m_iLiczba = 123
~CLiczba()//m_iLiczba = 123
~CLiczba()//m_iLiczba = 345
CLiczba(777)
Elementy kontenera (rozmiar = 1):
        777 (0x33950)
~CLiczba()//m_iLiczba = 777

Zagadnienia powiązane

ptr_setKontener reprezentujący zrównoważone drzewo binarne bez powtórzeń, którego elementami są wskaźniki danego typu. (szablon klasy)

Linki zewnętrzne