Boost é um conjunto de bibliotecas para a linguagem C++. Seu objetivo é fornecer um conjunto de bibliotecas úteis para uma grande variedade de aplicações. Ela traz em si abstrações de sistemas operacionais, como as de arquivo e threads, bibliotecas gerais como a de pointeiros inteligentes (smart pointers) e bibliotecas de um domínio de aplicação específico, como as de álgebra linear.
|
Table of Contents
|
Bibliotecas Boost
A Boost tem inúmeras bibliotecas, que são utilizáveis para diversos tipos de aplicações. Algumas delas, como a de thread e a de smart pointers foram incorporadas com modificações ao padrão C++.
Segue algumas das principais bibliotecas, sua utilidade e como usá-las.
Boost Thread
TO DO
Smart Pointers
UniquePtr
Ponteiro que não admite mais de um dono para o mesmo endereço de memória
SharedPtr
Cabeçalho onde se encontra: boost/shared_ptr.hpp
Ponteiro com contagem de referência. Quando chega a 0 ele é automaticamente destruído
Para todos os efeitos um shared_ptr irá se comportar como o seu ponteiro original, sendo que ao se fazer uma operação sobre o shared_ptr a operação
e realizada como se fosse feita sob o ponteiro original.
O ponteiro original de um shared_ptr pode ser acessado com o método get do shared_ptr.
O exemplo de código mostra as característuicas mais comuns de um shared_ptr
#include <iostream> #include "boost/shared_ptr.hpp"; struct Teste{ ~Teste(){ std::cout << "Destruido Teste"; } }; int main( int argc, char ** argv ){ int *x = new int(4); boost::shared_ptr<int> ptr( x ); *ptr *= 3; std::cout << "Endereço de memória de x é igual a " << ptr.get() << " <==> " << x << std::endl; std::cout << "valor do conteúdo do ponteiro de x é igual a " << *ptr << std::endl; Teste *pTeste = new Teste(); boost::shared_ptr<Teste> t( pTeste ); boost::shared_( pTeste )ptr<Teste> t2 = t; return 0; }
WeakPtr
Mantém uma referência a um shared_ptr. Possibilita testar para verificar se a referência a um shared_ptr ainda é válida.
FileSystem
TO DO
Lock
ScopedLock
Trava (mutex) válida para o escopo atual em que o programador está e em eventuais escopos internos
Links
http://www.boost.org/: Site oficial da biblioteca





