The C++ Boost Library: Beyond the STL
The Boost web site provides free, peer-reviewed, portable C++ source libraries. The emphasis is on libraries which work well with the C++ Standard Library. One goal is to establish existing practice
and provide reference implementations so that the Boost libraries are suitable for eventual standardization. Some of the libraries have already been proposed for inclusion in the C++ Standards Committee's upcoming C++ Standard Library Technical Report.
Header files are found at /user/include/boost/ while the documentation is found at /usr/share/doc/libboost*
Some Boost libraries that I find useful or interesting to me are:
- libboost-graph: Graphs are mathematical abstractions that are useful for solving many types of problems in computer science. Consequently, these abstractions must also be represented in computer programs. A standardized generic interface for traversing graphs is of utmost importance to encourage reuse of graph algorithms and data structures.
-
libboost-json: focuses on a common and popular use-case: parsing and serializing to and from a container called value which holds JSON types.
Any value which you build can be serialized and then deserialized, guaranteeing that the result will be equal to the original value. Whatever JSON output you produce with this library will be readable by most common JSON implementations in any language.
- libboost-program-options: to let program developers obtain program options, that is (name, value) pairs from the user, via conventional methods such as command line and config file.
-
libboost-serialization: containing the following functionalities:
- proper restoration of pointers to shared data
- serialization of STL containers and other commonly used templates
- data portability - streams of bytes created on one platform should be readable on any other
- archive interface must be rich enough to permit the creation of an archive that presents serialized data as XML in a useful manner
Here, "serialization" means the reversible deconstruction of an arbitrary set of C++ data structures to a sequence of bytes.
to archive: to refer to a specific rendering of this stream of bytes.