Składnia
#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
#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_map | Kontener 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
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.