Go back to Richel Bilderbeek's homepage.

Go back to Richel Bilderbeek's C++ page.

 

 

 

 

 

(C++) Library

 

A library is a collection of functions and classes.

 

The C++ standard library is called the Standard Template Library. The playground of the next version of the STL is the Boost library collection..

 

libraries can be catagorized by their way of using them in a project:

 

The STL is header-only. Most Boost libraries are header-only.

 

 

 

 

 

Overview of C++ libraries (incomplete)

 

In practice, these are the libraries I use or have used, on the platforms indicated by the pictograms.

 

 

  1. N/A    Annie: neural networks
  2. OKAYBigIntUbuntuWindows BigInt: near-infinite size integer
  3. N/A    Blitz++: scientify computation
  4. OKAYBoostLubuntuUbuntuWindows Boost: many libraries, next STL
  5. TODOBoostLubuntu  Boost.Accumulators: incremental calculation, statistical accumulators [4]
  6. TODOBoostLubuntu  Boost.Algorithm: algorithms [4]
  7. TODOBoostLubuntu  Boost.Any: Safe, generic container for single values of different value types [4]
  8. TODOBoostLubuntu  Boost.Array: STL compliant container wrapper for arrays of constant size [4]
  9. OKAYBoostLubuntuUbuntu Boost.Asio: Portable networking [4]
  10. TODOBoostLubuntu  Boost.Assign: Filling containers [4]
  11. TODOBoostLubuntu  Boost.Atomic: C++11-style atomic<> [4]
  12. TODOBoostLubuntu  Boost.Bimap: Bidirectional maps [4]
  13. TODOBoostLubuntu  Boost.Bind: binders
  14. TODOBoostLubuntu  Boost.Call Traits: Defines types for passing parameters [4]
  15. TODOBoostLubuntu  Boost.Chrono: time utilities [4]
  16. TODOBoostLubuntu  Boost.Circular Buffer: Circular/ring/cyclic buffer [4]
  17. TODOBoostLubuntu  Boost.Compatibility: Help for non-conforming standard libraries [4]
  18. TODOBoostLubuntu  Boost.Compressed Pair: Empty member optimization [4]
  19. TODOBoostLubuntu  Boost.ConceptCheck: Tools for generic programming [4]
  20. TODOBoostLubuntu  Boost.Container: Standard library containers and extensions [4]
  21. TODOBoostLubuntu  Boost.Context: Context switching library [4]
  22. OKAYBoostLubuntuUbuntu Boost.Conversion: Polymorphic and lexical casts [4]
  23. TODOBoostLubuntu  Boost.Coroutine: Coroutine library [4]
  24. TODOBoostLubuntu  Boost.CRC: Cyclic Redundancy Code [4]
  25. OKAYBoostLubuntuUbuntu Boost.Date_Time: date and time [4]
  26. TODOBoostLubuntu  Boost.Dynamic_bitset: dynamic_bitset [4]
  27. TODOBoostLubuntu  Boost.Enable_if: Selective inclusion of function template overloads [4]
  28. TODOBoostLubuntu  Boost.Exception: The Boost Exception library [4]
  29. OKAYBoostLubuntuUbuntuWindows Boost.Filesystem: The Boost Filesystem Library [4]
  30. TODOBoostLubuntu  Boost.Flyweight: Flyweight Design Pattern [4]
  31. OKAYBoostLubuntuUbuntu Boost.Foreach: BOOST_FOREACH [4]
  32. TODOBoostLubuntu  Boost.Format: text formatting [4]
  33. TODOBoostLubuntu  Boost.Function: callbacks [4]
  34. TODOBoostLubuntu  Boost.FunctionTypes: function to member types [4]
  35. TODOBoostLubuntu  Boost.Functional: function object wrappers [4]
  36. TODOBoostLubuntu  Boost.Functional/Factory: dynamic and static object creation [4]
  37. TODOBoostLubuntu  Boost.Functional/Forward: allow generic function objects to accept arbitrary arguments [4]
  38. TODOBoostLubuntu  Boost.Functional/Hash: A TR1 hash function object [4]
  39. TODOBoostLubuntu  Boost.Functional/Overloaded Function: Overload different functions into a single function object [4]
  40. TODOBoostLubuntu  Boost.Fusion: Library for working with tuples, including various containers, algorithms, etc. [4]
  41. OKAYBoostLubuntuWindows Boost.Geometry: Geometry Library [4]
  42. TODOBoostLubuntu  Boost.GIL: Generic Image Library [4]
  43. OKAYBoostUbuntu  Boost.Graph: Graph [4]
  44. TODOBoostLubuntu  Boost.Heap: Priority queue data structures [4]
  45. TODOBoostLubuntu  Boost.ICL: Interval Container Library [4]
  46. TODOBoostLubuntu  Boost.Identity Type: Wrap types within round parenthesis so they can always be passed as macro parameters [4]
  47. TODOBoostLubuntu  Boost.In Place Factory, Typed In Place Factory: Generic in-place construction of contained objects with a variadic argument-list [4]
  48. OKAYBoostUbuntu  Boost.Integer: Access standard integer types without placing any names in namespace std [4]
  49. TODOBoostLubuntu  Boost.Interprocess: Shared memory, memory mapped files, process-shared mutexes, condition variables, containers and allocators [4]
  50. TODOBoostLubuntu  Boost.Interval: Extends the usual arithmetic functions to mathematical intervals [4]
  51. TODOBoostLubuntu  Boost.Intrusive: Intrusive containers and algorithms [4]
  52. TODOBoostLubuntu  Boost.IO State Savers: I/O library [4]
  53. TODOBoostLubuntu  Boost.Iostreams: Framework for defining streams [4]
  54. TODOBoostLubuntu  Boost.Iterator: Iterator [4]
  55. OKAYBoostLubuntuUbuntu Boost.Lambda: Lambda functions
  56. OKAYBoostLubuntuUbuntu Boost.Lexical Cast: text conversions [4]
  57. TODOBoostLubuntu  Boost.Local Function: Program functions locally, within other functions, directly within the scope where they are needed [4]
  58. TODOBoostLubuntu  Boost.Locale: Provide localization and Unicode handling tools for C++ [4]
  59. TODOBoostLubuntu  Boost.Lockfree: Lockfree data structures [4]
  60. TODOBoostLubuntu  Boost.Math: Math [4]
  61. TODOBoostLubuntu  Boost.Math Common Factor: Greatest common divisor and least common multiple [4]
  62. TODOBoostLubuntu  Math Octonion: Octonions [4]
  63. TODOBoostLubuntu  Boost.Math Quaternion: Quaternions [4]
  64. TODOBoostLubuntu  Boost.Math/Special Functions: Mathematical special functions [4]
  65. TODOBoostLubuntu  Boost.Math/Statistical Distributions: Statisticals
  66. TODOBoostLubuntu  Boost.Member Function: Generalized binders for function/object/pointers and member functions [4]
  67. TODOBoostLubuntu  Boost.Meta State Machine: A very high-performance library for expressive UML2 finite state machines [4]
  68. TODOBoostLubuntu  Boost.Min-Max: Standard library extensions for simultaneous min/max and min/max element computations [4]
  69. TODOBoostLubuntu  Boost.Move: Portable move semantics for C++03 and C++11 compilers [4]
  70. TODOBoostLubuntu  Boost.MPI: Message Passing Interface library, for use in distributed-memory parallel application programming [4]
  71. TODOBoostLubuntu  Boost.MPL: Compile-time Metaprogramming Library
  72. TODOBoostLubuntu  Boost.Multi-Array: N-dimensional array [4]
  73. TODOBoostLubuntu  Boost.Multi-Index: container maintaining one or more indices with different sorting and access semantics [4]
  74. TODOBoostLubuntu  Boost.Multiprecision: Extended precision arithmetic types for floating point, integer andrational arithmetic [4]
  75. TODOBoostLubuntu  Boost.Numeric Conversion: Optimized Policy-based Numeric Conversions [4]
  76. TODOBoostLubuntu  Boost.Odeint: Solving ordinary differential equations [4]
  77. TODOBoostLubuntu  Boost.Operators: Templates ease arithmetic classes and iterators [4]
  78. TODOBoostLubuntu  Boost.Optional: Discriminated-union wrapper for optional values [4]
  79. TODOBoostLubuntu  Boost.Parameter: Boost.Parameter Library - Write functions that accept arguments by name [4]
  80. TODOBoostLubuntu  Boost.Phoenix: Define small unnamed function objects at the actual call site, and more [4]
  81. TODOBoostLubuntu  Boost.Pointer Container: Containers for storing heap-allocated polymorphic objects [4]
  82. TODOBoostLubuntu  Boost.Polygon: Booleans/clipping, resizing/offsetting and more for planar polygons with integral coordinates [4]
  83. TODOBoostLubuntu  Boost.Pool: Memory pool management [4]
  84. TODOBoostLubuntu  Boost.Preprocessor: Preprocessor metaprogramming tools including repetition and recursion [4]
  85. OKAYBoostLubuntuUbuntuWindows Boost.Program_options: parse program options
  86. TODOBoostLubuntu  Boost.Property Map: Concepts defining interfaces which map key objects to value objects [4]
  87. OKAYBoostLubuntu  Boost.PropertyTree: saving data to XML file, parsing XML files
  88. TODOBoostLubuntu  Boost.Proto: Expression template library and compiler construction toolkit [4]
  89. TODOBoostLubuntu  Boost.Python: interfacing Python and C++ [4]
  90. TODOBoostLubuntu  Boost.Random: A complete system for random number generation [4]
  91. TODOBoostLubuntu  Boost.Range: generic algorithms that builds on top of the new iterator concepts [4]
  92. TODOBoostLubuntu  Boost.Ratio: Compile time rational arithmetic [4]
  93. TODOBoostLubuntu  Boost.Rational: A rational number class [4]
  94. TODOBoostLubuntu  Boost.Ref: A utility library for passing references to generic functions [4]
  95. OKAYBoostLubuntuUbuntuWindows Boost.Regex: Regular expression library [4]
  96. TODOBoostLubuntu  Boost.Result Of: Determines the type of a function call expression [4]
  97. TODOBoostLubuntu  Boost.Scope Exit: Execute arbitrary code at scope exit [4]
  98. TODOBoostLubuntu  Boost.Serialization: Serialization for persistence and marshalling [4]
  99. TODOBoostLubuntu  Boost.Signals: Managed signals & slots callback implementation [4]
  100. OKAYBoostLubuntuUbuntu Boost.Signals2: Managed signals & slots callback implementation (thread-safe version 2) [4]
  101. OKAYBoostLubuntuUbuntuWindows Boost.Smart_ptr: smart pointers
  102. TODOBoostLubuntu  Boost.Spirit: LL parser framework represents parsers directly as EBNF grammars in inlined C++ [4]
  103. OKAYBoostUbuntu  Boost.Statechart: finite state machines
  104. TODOBoostLubuntu  Boost.Static Assert: Static assertions (compile time assertions) [4]
  105. TODOBoostLubuntu  Boost.String Algo: String algorithms library [4]
  106. TODOBoostLubuntu  Boost.Swap: Enhanced generic swap function [4]
  107. TODOBoostLubuntu  Boost.System: Operating system support [4]
  108. OKAYBoostLubuntu  Boost.Test: Support for simple program testing, full unit testing, and for program execution monitoring [4]
  109. TODOBoostLubuntu  Boost.Thread: Portable C++ multi-threading [4]
  110. TODOBoostLubuntu  Boost.Timer: Event timer, progress timer, and progress display classes [4]
  111. TODOBoostLubuntu  Boost.Tokenizer: Break of a string or other character sequence into a series of tokens [4]
  112. TODOBoostLubuntu  Boost.TR1: TR1 library
  113. TODOBoostLubuntu  Boost.Tribool: 3-state boolean type library [4]
  114. TODOBoostLubuntu  Boost.Tuple: Tuple
  115. TODOBoostLubuntu  Boost.Type Traits: Templates for fundamental properties of types [4]
  116. TODOBoostLubuntu  Boost.Typeof: Typeof operator emulation [4]
  117. OKAYBoostLubuntuWindows Boost.uBLAS: Matrices [4]
  118. OKAYBoostLubuntuWindows Boost.Units: Zero-overhead dimensional analysis and unit/quantity manipulation and conversion [4]
  119. TODOBoostLubuntu  Boost.Unordered: Unordered associative containers [4]
  120. TODOBoostLubuntu  Boost.Utility: noncopyable, checked_delete(), checked_array_delete(), next(), prior() function templates, plus base-from-member idiom [4]
  121. TODOBoostLubuntu  Boost.Uuid: A universally unique identifier [4]
  122. TODOBoostLubuntu  Boost.Value Initialized: Wrapper for uniform-syntax value initialization [4]
  123. TODOBoostLubuntu  Boost.Variant: Safe, generic, stack-based discriminated union container [4]
  124. TODOBoostLubuntu  Boost.Wave: C++ implementation of the mandated C99/C++ preprocessor functionality [4]
  125. TODOBoostLubuntu  Boost.Xpressive: Regular expressions allowing context-free grammars [4]
  126. ?OKAYCLNUbuntu  CLN: (near-) infinite-precision numbers
  127. ?OKAYWindows   CLX: GUI
  128. N/A    Eo: genetic algorithms
  129. ?OKAYUbuntu   FANN: neural networks
  130. ?OKAYUbuntu   Flood: neural networks
  131. ?OKAYUbuntu   GAlib: genetic algorithms
  132. N/A    GMP: multi-precision numbers
  133. ?OKAYlibndsNDS  libnds: working with NDS
  134. OKAYUbuntu   MathGL: visualizing data
  135. OKAYLubuntu   NAG: algorithms
  136. OKAYWindows   OpenCV: computer vision
  137. ?OKAYUbuntuWindows  OpenGL: 2D and 3D graphics
  138. OKAYUbuntu   Poppler: render PDFs
  139. N/AQuantLib   QuantLib: quantitative finance
  140. OKAYQtUbuntuWindows QT: GUI
  141. OKAYLubuntuUbuntu  Qwt: visualizing data in 2D charts/plots
  142. N/AUbuntu   QwtPlot3D: visualizing data in 3D charts/plots
  143. OKAYUbuntu   SDL: multimedia
  144. ?OKAYUbuntu   Shark: machine learning
  145. OKAYSTLLubuntuUbuntuWindows STL: general purposes
  146. OKAYUbuntu   STK: audio
  147. ?OKAYVCLWindows  VCL: GUI
  148. OKAYWtLubuntuUbuntu Wt: dynamic websites

 

Familiarize yourself with the STL and Boost libraries [1][2]. Prefer using libraries over hand-crafted code [3].

 

 

 

 

 

References

 

  1. Scott Meyers. Effective C++ (3rd edition). ISBN: 0-321-33487-6. Item 53: Familiarize yourself with the standard library, including TR1
  2. Scott Meyers. Effective C++ (3rd edition). ISBN: 0-321-33487-6. Item 54: Familiarize yourself with Boost
  3. Bjarne Stroustrup. Programming. 2009. ISBN: 978-0-321-54372-1. Chapter 5.9.1: 'Use library facilities rather than your own code when you can'
  4. Boost documentation

 

 

 

 

 

Go back to Richel Bilderbeek's C++ page.

Go back to Richel Bilderbeek's homepage.

 

Valid XHTML 1.0 Strict