Added information about Boost, its advantages, available libraries and how to get started.pull/8483/head
parent
0cadde1092
commit
0c28134850
1 changed files with 35 additions and 0 deletions
@ -0,0 +1,35 @@ |
||||
# Boost |
||||
|
||||
Boost is a widely acknowledged collection of high-quality C++ libraries aimed at making C++ development more productive. As of version 1.88, it contains 165 libraries for various purposes. |
||||
|
||||
## Advantages of using Boost |
||||
|
||||
There are various advantages of using Boost. The main one is ability to avoid reinventing the wheel if a Boost library already implements the functionality you need. Other important advantages are: |
||||
- Boost libraries are frequently reviewed, well-designed and extensively tested prior release. |
||||
- Boost is open-source and available under a free licence, including for commercial use – The Boost Software Licence. |
||||
- Boost allows for cross-platform development, with single source code. Boost libraries support Windows, various Linux variants, Apple OS X, IOS, Android, and Xbox. |
||||
- Libraries have comprehensive documentation, with detailed introduction on how to get started, supported by many examples. Since Boost libraries are widely acknowledged – there are a lot of information available online from various sources and on various languages. |
||||
|
||||
## Most popular libraries and Library categories |
||||
|
||||
The most notable and recognised Boost libraries are: |
||||
|
||||
- Boost.Asio: provides a cross-platform low-level asynchronous I/O library for network programming. Boost.Beast is built on top of Boost.Asio and provides HTTP and Websocket interfaces. |
||||
- Boost.Log: provides tools for adding logging to libraries and applications. |
||||
- Boost.Program_options: provides interfaces for the application command line and config file parsing. |
||||
|
||||
To ease navigation through a significant range of libraries – Boost libraries are organised into different categories. |
||||
|
||||
There are 23 libraries available for Containers and 22 for Data Structures. 19 libraries that covered Maths, they provide support for statistics, geometry, and linear algebra. |
||||
|
||||
For Concurrent Programming, Function objects and higher-order programming, String processing, Template Metaprogramming, Generic Programming, and Miscellaneous utilities, there are on average 15 libraries for each category. |
||||
|
||||
For the remainder, there are libraries for: Correctness and testing, Iterators, Patterns and Idioms, and Programming Interfaces with around 6-7 libraries for each category; Domain Specific, Error handling, Parsing, Memory, and Preprocessor Metaprogramming with 3-5 libraries for each category; And State Machines with two libraries. |
||||
|
||||
Finally, there are single libraries for Image Processing and Inter-language (Python-C++ integration). |
||||
|
||||
Many Boost libraries have been accepted into the C++ standards - smart pointers, threads, regex, random, ratio, tuple - to C++11; filesystem, any, optional, variant, string_view to C++17. |
||||
|
||||
## How to learn Boost? |
||||
|
||||
Head to Boost official website ([@official@Boost](https://www.boost.io)) or directly to documentation’s “Getting Started” guide ([@official@Boost](https://www.boost.io/doc/user-guide/getting-started.html)). |
Loading…
Reference in new issue