The Boost C++ Libraries are a collection of peer-reviewed, open source libraries that extend the functionality of C++. Most of the libraries are licensed under the Boost Software License, designed to allow Boost to be used with both open and closed source projects. Many of Boost's founders are on the C++ standard committee and several Boost libraries have been accepted for incorporation into the Technical Report 1 of C++0x.
The libraries are aimed at a wide range of C++ users and application domains. They range from general-purpose libraries like the smart_ptr library, to OS abstractions like FileSystem, to libraries primarily aimed at other library developers and advanced C++ users, like 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 and metaprogramming 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:
using namespace boost::numeric::ublas; /* "y = Ax" example */
int main
{
vector
x(0) = 1; x(1) = 2;
matrix
A(0,0) = 0; A(0,1) = 1;
A(1,0) = 2; A(1,1) = 3;
vector
std::cout << y << std::endl;
return 0;
}
Generating random numbers – Boost.Random
Boost provides distribution-independent pseudorandom number generators and PRNG-independent probability distributions, which are combined to build a concrete generator.- Example showing how to sample from a normal distribution using the Mersenne Twister generator:
using 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
// select Gaussian probability distribution
normal_distribution
// bind random number generator to distribution, forming a function
variate_generator
// sample from the distribution
return normal_sampler();
}
Multithreading – Boost.Thread
Example code that demonstrates creation of threads:- include
- include
using 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;}
- Introduction to Boost.Threads in Dr. Dobb's Journal. (2002)
- Boost.Threads API reference
- threadpool library based on Boost.Thread
Associated 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
Copyright © 2008, Dictionary.com, LLC. All rights reserved.











