Boost (bibliotecas de C++)

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 do C++11[1][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

O Boost fornece bibliotecas nas seguintes áreas:

Exemplos

editar

Álgebra linear

editar

É 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

É 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

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

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. Consultado 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. Consultado em 17 de fevereiro de 2008 
  3. «Boost: Smart Pointers» (em inglês). Sítio oficial da Boost. 25 de setembro de 2005. Consultado em 17 de fevereiro de 2008 
  4. «Boost: Boost Filesystem Library» (em inglês). Sítio oficial da Boost. 3 de junho de 2007. Consultado em 17 de fevereiro de 2008 
  5. «THE BOOST MPL LIBRARY» (em inglês). Sítio oficial da Boost. 15 de novembro de 2004. Consultado em 17 de fevereiro de 2008 
  6. «Beman Dawes» (em inglês). Sítio oficial da Boost. 23 de abril de 2008. Consultado em 18 de outubro de 2008 
  7. «Dave Abrahams» (em inglês). Sítio oficial da Boost. 26 de junho de 2008. Consultado em 18 de outubro de 2008 

Ver também

editar

Ligações externas

editar