Biblioteca Boost

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

Boost é uma coleção de bibliotecas que estendem a funcionalidade da linguagem de programação C++. Possui uma licença especial, desenvolvida para ser utilizada em qualquer projeto. Várias bibliotecas presentes na Boost já foram aceitas no TR1 da próxima especificação da biblioteca padrão do C++[1] (cujo nome é informalmente conhecido como C++0x[2] ), sendo que vários dos fundadores da Boost estão no próprio comitê de padronização da linguagem.

Devido à ampla revisão e controle de qualidade, as bibliotecas incluídas possuem grande qualidade, sendo destinadas a uma vasta gama de usuários do C++, em diversos domínios. As possibilidades passam desde bibliotecas gerais como smart_ptr[3] e abstrações do sistema operacional como o filesystem[4] a bibliotecas para usuários avançados como a MPL[5] .

Para garantir eficiência e flexibilidade, o Boost faz uso extensivo de templates, tornando-se uma fonte de pesquisa para o desenvolvimento de programação genérica e metaprogramação em C++. Para utilizá-la, o desenvolvedor deve estar familiarizado com o estilo C++, isto é, a tendência em utilizar o C++ como um linguagem própria ao invés de uma extensão do C.

Bibliotecas[editar | editar código-fonte]

O Boost fornece bibliotecas nas seguintes áreas:

Exemplos[editar | editar código-fonte]

Álgebra linear[editar | editar código-fonte]

É incluída uma biblioteca de álgebra linear chamada uBLAS, com suporte BLAS para arranjos e matrizes. Abaixo segue um exemplo de uso:

// exemplo mostrando como multiplicar um vetor por uma matriz
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
 
using namespace boost::numeric::ublas;
 
/* "y = Ax" */
int main ()
{
 	vector<double> x (2);
 	x(0) = 1; x(1) = 2;
 
 	matrix<double> A(2,2);
 	A(0,0) = 0; A(0,1) = 1;
 	A(1,0) = 2; A(1,1) = 3;
 
 	vector<double> y = prod(A, x);
 
 	std::cout << y << std::endl;
 	return 0;
}

Geração de números aleatórios[editar | editar código-fonte]

É incluída uma biblioteca para a geração de vários números pseudo-aleatórios. Abaixo segue um exemplo de uso:

// exemplo mostrando como obter uma distribuição normal
#include <boost/random.hpp>
#include <ctime>
 
using namespace boost;
 
double SampleNormal (double mean, double sigma)
{
     // seleciona o gerador de número aleatório
     mt19937 rng;
     // gerador padrão com o número de segundos desde 1970
     rng.seed(static_cast<unsigned> (std::time(0)));
 
     // escolha da distribuição de probabilidade desejada
     normal_distribution<double> norm_dist(mean, sigma);
 
     // relaciona o gerador de número aleatório à distribuição, formando uma função
     variate_generator<mt19937&, normal_distribution<double> >  normal_sampler(rng, norm_dist);
 
     // obtendo um valor da distribuição
     return normal_sampler();
}

Multiprocessamento[editar | editar código-fonte]

Segue abaixo exemplo de criação de threads:

#include <boost/thread/thread.hpp>
#include <iostream>
 
using namespace std; 
 
void ola_mundo()
{
   cout << "Ola mundo, sou uma thread!" << endl;
}
 
int main(int argc, char* argv[])
{
   // inicia uma nova thread que chama a função ola_mundo
   boost::thread minha_thread( &ola_mundo );
   // espera a thread finalizar
   minha_thread.join();
 
   return 0;
}

Pessoas associadas ao Boost[editar | editar código-fonte]

Autor de vários livros sobre o C++, Nicolai Josuttis contribuiu com a biblioteca de arranjos do Boost em 2001. Fundadores do grupo ainda ativos na comunidade incluem Beman Dawes[6] e David Abrahams[7] .

Referências

  1. Library Technical Report (em inglês). Comitê de padronização do C++ (2 de julho de 2003). Página visitada em 18 de outubro de 2008.
  2. Bjarne Stroustrup (maio de 2005). The Design of C++0x (PDF) (em inglês). C/C++ Users Journal. Página visitada em 17 de fevereiro de 2008.
  3. Boost: Smart Pointers (em inglês). Sítio oficial da Boost (25 de setembro de 2005). Página visitada em 17 de fevereiro de 2008.
  4. Boost: Boost Filesystem Library (em inglês). Sítio oficial da Boost (3 de junho de 2007). Página visitada em 17 de fevereiro de 2008.
  5. THE BOOST MPL LIBRARY (em inglês). Sítio oficial da Boost (15 de novembro de 2004). Página visitada em 17 de fevereiro de 2008.
  6. Beman Dawes (em inglês). Sítio oficial da Boost (23 de abril de 2008). Página visitada em 18 de outubro de 2008.
  7. Dave Abrahams (em inglês). Sítio oficial da Boost (26 de junho de 2008). Página visitada em 18 de outubro de 2008.

Ver também[editar | editar código-fonte]

Ligações externas[editar | editar código-fonte]