- Boost C++ Libraries
infobox software
name = Boost C++ Libraries
caption = Boost logo
latest_release_version = 1.36.0
latest_release_date =14 August 2008
genre = Libraries
license = [http://www.boost.org/LICENSE_1_0.txt Boost Software License]
website = http://www.boost.org/The Boost C++ Libraries are a collection of
peer-review ed,open source libraries that extend the functionality ofC++ . Most of the libraries are licensed under theBoost Software License , designed to allow Boost to be used with both open andclosed source projects. Many of Boost's founders are on the C++ standard committee and several Boost libraries have been accepted for incorporation into theTechnical Report 1 ofC++0x . [ [http://www.open-std.org/jtc1/sc22/wg21/docs/library_technical_report.html Library Technical Report ] ]The libraries are aimed at a wide range of C++ users and application domains. They range from general-purpose libraries like [http://www.boost.org/doc/libs/1_35_0/libs/smart_ptr/smart_ptr.htm the smart_ptr library] , to OS abstractions like FileSystem, to libraries primarily aimed at other library developers and advanced C++ users, like [http://www.boost.org/libs/mpl the MPL] .
In order to ensure efficiency and flexibility, Boost makes extensive use of templates. Boost has been a source of extensive work and research into
generic programming andmetaprogramming in C++.Examples
The current Boost release contains 87 individual libraries,including the following three:
Linear algebra – uBLAS
Boost includes the uBLAS
linear algebra library, with BLAS support for vectors and matrices.* Example showing how to multiply a vector with a matrix:
#include
#include
#include
#includeusing namespace boost::numeric::ublas;
/* "y = Ax" example */int main () { vector
x (2); x(0) = 1; x(1) = 2; matrix A(2,2); A(0,0) = 0; A(0,1) = 1; A(1,0) = 2; A(1,1) = 3; vector
y = prod(A, x); std::cout << y << std::endl; return 0;}
Generating random numbers – Boost.Random
Boost provides distribution-independent
pseudorandom number generator s and PRNG-independent probability distributions, which are combined to build a concrete generator.
* Example showing how to sample from anormal distribution using theMersenne Twister generator:
#include
#includeusing namespace boost;
double SampleNormal (double mean, double sigma){ // Create a Mersenne twister random number generator // that is seeded once with #seconds since 1970 static mt19937 rng(static_cast
(std::time(0))); // select Gaussian probability distribution normal_distribution
norm_dist(mean, sigma); // bind random number generator to distribution, forming a function variate_generator
> normal_sampler(rng, norm_dist); // sample from the distribution return normal_sampler();}See [http://boost.org/libs/random/ Boost Random Number Library] for more details.
Multithreading – Boost.Thread
Example code that demonstrates creation of threads:
#include
#includeusing namespace std;
void hello_world() { cout << "Hello world, I'm a thread!" << endl;}
int main(int argc, char* argv [] ) { // start a new thread that calls the "hello_world" function boost::thread my_thread(&hello_world); // wait for the thread to finish my_thread.join(); return 0;}
* [http://www.ddj.com/dept/cpp/184401518 Introduction to Boost.Threads] in
Dr. Dobb's Journal . (2002)
* Boost.Threads [http://www.boost.org/doc/html/thread.html API reference] .
* [http://threadpool.sourceforge.net threadpool library] based on Boost.ThreadAssociated people
Original founders of Boost still active in the community include Beman Dawes and David Abrahams. Author of several books on C++,
Nicolai Josuttis contributed the Boost array library in 2001. Around 3,000 people are subscribed to Boost mail-list and dozens of them are very active (as of 2007 ).See also
* Jam — Boost includes a package called Boost.Build, which uses a special version of Perforce Jam called Boost.Jam
References
External links
* [http://boost.org/ Boost Homepage]
* [http://www.codeproject.com/vcpp/stl/boostsmartptr.asp Smart Pointers to boost your code]
* [http://shoddykid.blogspot.com/2008/07/getting-started-with-boost.html Building Boost libraries]
Wikimedia Foundation. 2010.