Biblioteki C/C++
ptr_set
[szablon klasy] Kontener reprezentujący zrównoważone drzewo binarne bez powtórzeń, którego elementami są wskaźniki danego typu.Składnia
#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_set
: public ptr_set_adapter < Key, std::set < void *, void_ptr_indirect_fun < Compare, Key >, Allocator >, CloneAllocator, true >
{
};
}
Opis szczegółowy
Kontener
ptr_set reprezentuje zrównoważone drzewo binarne
bez powtórzeń, którego elementami są wskaźniki danego typu. Kontener
ptr_set jest odpowiednikiem kontenera
std::set. Istotną różnicą między kontenerami jest fakt, że kontener
ptr_set przyjmuje wskaźniki na obiekty, zamiast obiektów. Obiekty dodane do kontenera są zwalniane za pomocą operatora
delete
. Jeżeli element nie może zostać dodany do kontenera to zajmowana przez niego pamięć zostanie zwolniona automatycznie.
Przykład
#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_set < 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)
~CLiczba()//m_iLiczba = 123
Elementy kontenera (rozmiar = 2):
123 (0x35ea0)
345 (0x33990)
~CLiczba()//m_iLiczba = 123
~CLiczba()//m_iLiczba = 345
CLiczba(777)
Elementy kontenera (rozmiar = 1):
777 (0x33950)
~CLiczba()//m_iLiczba = 777
Zagadnienia powiązane
ptr_multiset | Kontener reprezentujący zrównoważone drzewo binarne z powtórzeniami, którego elementami 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.