I recently watched the extended version of Sean Parent’s amazing C++ Seasoning talk, which was given at Amazon’s A9 and posted on the A9 YouTube Channel. I highly recommend the extended version, which can be watched in two parts:
At one point in the talk, Sean points out that the STL is far from complete and that you should write your own algorithm if it isn’t there. This is a point that Marshall Clow, maintainer of the libc++
standard library, dedicated a whole talk to at CppCon 2016.
Sean also mentions at another point in the talk that the ASL, Adobe Standard Library, itself has a number of algorithms added on top of the STL algorithms provided in the standard library.
This got me wondering, what are all the C++ STL-like open source libraries out in the wild and how many have additional algorithms? The ones that I knew off the top of my head were:
Then I went and did some searching and came across:
But that was it. Note that BSL has it’s own very unique style that is furthest away from the STL. But the rest look and feel very STL-like / Stepanov inspired. My question to the readers is do you know any that aren’t listed in the four above? I plan to write a follow up blog post in the near future post-CppCon 2020 that takes a look at some of the algorithms that exist outside of the C++ STL, but before I do that I would love to have a comprehensive list.
If you know of any libraries, either let me know on Twitter or comment on the corresponding Reddit post. As new libraries are mentioned, I will add them to the list below.
Update: many suggestions fit into different categories, so I have done my best to categorize them below.
Full List of C++ STL-Like Libraries
General
- ASL (Adobe Standard Library)
- Boost Algorithm Library
- BSL (Bloomberg Standard Library)
- EASTL (Electronic Arts STL)
Concurrency and Parallelism
Functionally Composable
Domain Specific
- CGAL (Computational Geometry Algorithms Library)
- Crypto++
- CTRE (Compile Time Regular Expressions)
- BGL (Boost Graph Library)
- Boost String Algorithms Library
- Boost.Geometry Algorithms
Other Programming Languages