|
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.[1] Image File history File links Broom_icon. ...
Image File history File links Boost. ...
A software release is the distribution, whether public or private, of an initial or new and upgraded version of a computer software product. ...
May 12 is the 132nd day of the year (133rd in leap years) in the Gregorian calendar. ...
Year 2007 (MMVII) is now the current year, a common year starting on Monday of the Gregorian calendar and the AD/CE era. ...
Computer software can be organized into categories based on common function, type, or field of use. ...
In computer programming, an application framework is a term usually used to refer to a set of libraries or classes that are used to implement the standard structure of an application for a specific operating system. ...
A software license is a legal agreement which may take the form of a proprietary or gratuitous license as well as a memorandum of contract between a producer and a user of computer software. ...
A website (alternatively, Web site or web site) is a collection of Web pages, images, videos and other digital assets that is hosted on one or several Web server(s), usually accessible via the Internet, cell phone or a LAN. A Web page is a document, typically written in HTML...
A reviewer at the National Institutes of Health evaluates a grant proposal. ...
Open source refers to projects that are open to the public and which draw on other projects that are freely available to the general public. ...
Illustration of an application which may use libvorbisfile. ...
C++ (pronounced see plus plus, IPA: ) is a general-purpose, programming language with high-level and low-level capabilities. ...
The text below is generated by a template, which has been proposed for deletion. ...
ISO/IEC International Standard 14882, Programming Languages â C++, is the official standard for the C++ programming language and library, defined by the JTC1/SC22/WG21 working group. ...
Technical Report 1 (TR1) is a draft document specifying additions to the C++ Standard Library such as regular expressions, smart pointers, hash tables, and random number generators. ...
C++0x is the planned new standard for the C++ programming language. ...
The libraries are aimed at a wide range of C++ users and application domains. They range from general-purpose libraries like SmartPtr, to OS Abstractions like FileSystem, to libraries primarily aimed at other library developers and advanced C++ users, like 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++. In computer programming, templates are a feature of the C++ programming language that allow code to be written without consideration of the data type with which it will eventually be used. ...
Generic programming is a style of computer programming where algorithms are written in an extended grammar and are made adaptable by specifying variable parts that are then somehow instantiated later by the compiler with respect to the base grammar. ...
Metaprogramming is the writing of computer programs that write or manipulate other programs (or themselves) as their data or that do part of the work during compile time that is otherwise done at run time. ...
Libraries Boost provides extension libraries in the following areas: - Algorithms
- Concurrent programming (threads)
- Containers
- array - Management of fixed-size arrays with STL container semantics
- Boost Graph Library (BGL) - Generic graph containers, components and algorithms
- multi-array - Simplifies creation of N-dimensional arrays
- multi-index containers - Containers with built in indexes that allow different sorting and access semantics
- pointer containers - Containers modeled after most standard STL containers that allow for transparent management of pointers to values
- property map - Interface specifications in the form of concepts and a general purpose interface for mapping key values to objects
- variant - A safe and generic stack-based object container that allows for the efficient storage of and access to an object of a type that can be chosen from among a set of types that must be specified at compile time.
- Correctness and testing
- concept check - Allows for the enforcement of actual template parameter requirements (concepts)
- static assert - Compile time assertion support
- Boost Test Library - A matched set of components for writing test programs, organizing tests into test cases and test suites, and controlling their runtime execution
- Data structures
- dynamic_bitset - Dynamic
std::bitset-like data structure - Function objects and higher-order programming
- bind and mem_fn - General binders for functions, function objects, function pointers and member functions
- function - Function object wrappers for deferred calls. Also, provides a generalized mechanism for callbacks
- functional - Enhancements to the function object adapters specified in the C++ Standard Library, including:
- function object traits
- negators
- binders
- adapters for pointers to functions
- adapters for pointers to member functions
- hash - An implementation of the hash function object specified by the C++ Technical Report 1 (TR1). Can be used as the default hash function for unordered associative containers
- lambda - In the spirit of lambda abstractions, allows for the definition of small anonymous function objects and operations on those objects at a call site, using placeholders, especially for use with deferred callbacks from algorithms.
- ref - Provides utility class templates for enhancing the capabilities of standard C++ references, especially for use with generic functions
- result_of - Helps in the determination of the type of a call expression
- signals and slots - Managed signals and slots callback implementation
- Generic programming
- Graphs
- Input/output
- Interlanguage support (for Python)
- Iterators
- iterators
- operators - Class templates that help with overloaded operator definitions for user defined iterators and classes that can participate in arithmetic computation.
- tokenizer - Provides a view of a set of tokens contained in a sequence that makes them appear as a container with iterator access
- Math and Numerics
- Memory
- pool - Provides a simple segregated storage based memory management scheme
- smart_ptr - A collection of smart pointer class templates with different pointee management semantics
- scoped_ptr - Owns the pointee (single object)
- scoped_array - Like scoped_ptr, but for arrays
- shared_ptr - Potentially shares the pointer with other shared_ptrs. Pointee is destroyed when last shared_ptr to it is destroyed
- shared_array - Like shared_ptr, but for arrays
- weak_ptr - Provides a "weak" reference to an object that is already managed by a shared_ptr
- intrusive_ptr - Similared to shared_ptr, but uses a reference count provided by the pointee
- utility - Miscellaneous support classes, including:
- base from member idiom - Provides a workaround for a class that needs to initialize a member of a base class inside its own (i.e., the derived class') constructor's initializer list
- checked delete - Check if an attempt is made to destroy an object or array of objects using a pointer to an incomplete type
- next and prior functions - Allow for easier motion of a forward or bidirectional iterator, especially when the results of such a motion need to be stored in a separate iterator (i.e., should not change the original iterator)
- noncopyable - Allows for the prohibition of copy construction and copy assignment
- addressof - Allows for the acquisition of an object's real address, bypassing any overloads of operator&(), in the process
- result_of - Helps in the determination of the type of a call expression
- Miscellaneous
- Parsers
- Preprocessor metaprogramming
- String and text processing
- lexical_cast - Type conversions to/from text
- format - Type safe argument formatting according to a format string
- iostreams - C++ streams and stream buffer assistance for new sources/sinks, filters framework
- regex - Support for regular expressions
- Spirit - An object-oriented recursive-descent parser generator framework
- string algorithms - A collection of various algorithms related to strings
- tokenizer - Allows for the partitioning of a string or other character sequence into tokens
- wave - Standards conformant implementation of the mandated [C99] / C++ pre-processor functionality packed behind an easy to use interface
- Template metaprogramming
- mpl - A general purpose high-level metaprogramming framework of compile-time algorithms, sequences and metafunctions
- static assert - Compile time assertion support
- type traits - Templates that define the fundamental properties of types
- Workarounds for broken compilers
For the form of code consisting entirely of subroutine calls, see Threaded code. ...
A binary tree, a simple type of branching linked data structure. ...
Software testing is the process used to measure the quality of developed computer software. ...
Higher-order programming is programming that exploits the ability to use functions as values; it is usually borrowed from models of computation like the lambda calculus which make heavy use of higher-order functions. ...
The lambda calculus is a formal system designed to investigate function definition, function application, and recursion. ...
Generic programming is a style of computer programming where algorithms are written in an extended grammar and are made adaptable by specifying variable parts that are then somehow instantiated later by the compiler with respect to the base grammar. ...
Python is a high-level programming language first released by Guido van Rossum in 1991. ...
In computer science, an iterator is an object which allows a programmer to traverse through all the elements of a collection, regardless of its specific implementation. ...
Primary storage is a category of computer storage, often called main memory. ...
The Spirit Parser Framework is an object oriented recursive descent parser generator framework implemented using template metaprogramming techniques. ...
In computer programming and formal language theory, (and other branches of mathematics), a string is an ordered sequence of symbols. ...
The Spirit Parser Framework is an object oriented recursive descent parser generator framework implemented using template metaprogramming techniques. ...
It has been suggested that this article or section be merged with Tokenizing. ...
Template metaprogramming is a programming technique in which templates are used by a compiler to generate temporary source code, which is merged by the compiler with the rest of the source code and then compiled. ...
Linear algebra Boost includes a linear algebra library called uBLAS, with BLAS support for vectors and matrices. Linear algebra is the branch of mathematics concerned with the study of vectors, vector spaces (also called linear spaces), linear maps (also called linear transformations), and systems of linear equations. ...
Basic Linear Algebra Subprograms (BLAS) are routines which perform basic linear algebra operations such as vector and matrix multiplication. ...
- Example showing how to multiply a vector with a matrix:
#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" example */ 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; } Generating random numbers Boost provides several pseudorandom number generators, together with several target distributions. // A pseudorandom number generator (PRNG) is an algorithm that uses arithmetics to generate a sequence of numbers that approximate the properties of random numbers. ...
Warning: Do not use this function as it is. It creates a new generator each call, which is seeded every call, resulting in bad randomness. The normal distribution, also called the Gaussian distribution, is an important family of continuous probability distributions, applicable in many fields. ...
#include <boost/random.hpp> #include <ctime> using namespace boost; double SampleNormal (double mean, double sigma) { // select random number generator mt19937 rng; // seed generator with #seconds since 1970 rng.seed(static_cast<unsigned> (std::time(0))); // select desired probability distribution normal_distribution<double> norm_dist(mean, sigma); // bind random number generator to distribution, forming a function variate_generator<mt19937&, normal_distribution<double> > normal_sampler(rng, norm_dist); // sample from the distribution return normal_sampler(); } Check Boost Random Number Library for more details.
Multithreading Example code that demonstrates creation of threads: #include <boost/thread/thread.hpp> #include <iostream> 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; } Dr. Dobbs Journal of Computer Calisthenics & Orthodontia with the subtitle Running Light without Overbyte was the full title of the pioneer microcomputer hobbyist newsletter published from early 1976 by Bob Albrecht and Dennis Allisons Peoples Computer Company. ...
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). Berman Dawes may refer to: Beman Gates Dawes - The deceased Republican politician in the United States. ...
David Abrahams is a computer programmer and author. ...
2007 is a common year starting on Monday of the Gregorian calendar. ...
References Image File history File links This is a lossless scalable vector image. ...
External links Wikibooks has more on the topic of Boost C++ Libraries |