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

ptr_multimap

[szablon klasy] Kontener reprezentujący zrównoważoną mapę powiązań klucz-wartość z powtórzeniami, którego wartości są wskaźniki danego typu.

Składnia

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

namespace boost
{
    template
    <
    class Key,
    class T,
    class Compare = std::less < Key >,
    class CloneAllocator = heap_clone_allocator,
    class Allocator = std::allocator < std::pair < const Key, void *> >
    >
    class ptr_multimap
        : public ptr_multimap_adapter < T, std::multimap < Key, void *, Compare, Allocator >, CloneAllocator >
    {
    };
}

Opis szczegółowy

Kontener ptr_multimap reprezentuje zrównoważoną mapę powiązań klucz-wartość z powtórzeniami, którego wartości są wskaźniki danego typu. Kontener ptr_multimap jest odpowiednikiem kontenera std::multimap. Istotną różnicą między kontenerami jest fakt, że kontener ptr_multimap przyjmuje jako wartości wskaźniki na obiekty, zamiast obiektów. Obiekty dodane do kontenera są zwalniane za pomocą operatora
delete
.

Dodatkowe informacje

Pomimo, iż ideologia dla kontenera ptr_multimap pozostała taka sama jak dla kontenera std::multimap to interfejs do jego obsługi został zmieniony.

Przykład

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

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_multimap < std::string, 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%s  = %d (0x%x)\n", i->first.c_str(), * i->second, &* i->second );
   
    printf( "\n" );
}

int main()
{
    ContainerT kontener;
    kontener.insert( std::string( "jeden" ), new TypeT( 123 ) );
    kontener.insert( std::string( "dwa" ), new TypeT( 345 ) );
    kontener.insert( std::string( "trzy" ), new TypeT( 123 ) );
    kontener.insert( std::string( "dwa" ), new TypeT( 555 ) );
    wypisz( kontener );
    kontener.clear();
    kontener.insert( std::string( "cztery" ), new TypeT( 777 ) );
    wypisz( kontener );
    return 0;
}
Standardowe wyjście programu:
CLiczba(123)
CLiczba(345)
CLiczba(123)
CLiczba(555)
Elementy kontenera (rozmiar = 4):
        dwa  = 345 (0x339b0)
        dwa  = 555 (0x35fe0)
        jeden  = 123 (0x35ec0)
        trzy  = 123 (0x35f50)

~CLiczba()//m_iLiczba = 345
~CLiczba()//m_iLiczba = 555
~CLiczba()//m_iLiczba = 123
~CLiczba()//m_iLiczba = 123
CLiczba(777)
Elementy kontenera (rozmiar = 1):
        cztery  = 777 (0x33950)

~CLiczba()//m_iLiczba = 777

Zagadnienia powiązane

ptr_mapKontener reprezentujący zrównoważoną mapę powiązań klucz-wartość bez powtórzeń, którego wartości są wskaźniki danego typu. (szablon klasy)

Linki zewnętrzne