Contents
See also CodingStyle/C++.
STL
Wrap an existing C-style pointer to an array with std::vector: http://stackoverflow.com/a/15203325/14878; modifies std::vector internals to work.
C++11
Move semantics/perfect forwarding
Smart pointers
Data structures
B-tree-based maps & sets
In 2013, Google open-sourced a mostly-STL-compatible b-tree implementation: B-tree containers from Google. The old project is on Google code, but JGRennison/cpp-btree is a fork with minor fixes and some C++11 support (e.g. move constructors, etc).
tlx library contains a fast loser tree implementation, a newer version of the bingmann/stx-btree implemtnation, a smart pointer replacement for shared_ptr called counting_ptr, and std::string helper functions missing from STL.
C++ and Python
pybind/pybind11: Seamless operability between C++11 and Python
tbenthompson/cppimport: Import C++ files directly from Python
Interesting libraries
awesome-cpp: A curated list of awesome C/C++ frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.
nothings/single_file_libs: List of single-file C/C++ libraries
hughperkins/Jinja2CppLight: (very) lightweight version of Jinja2 for C++
Other stuff
Videos
Curiously recurring C++ bugs at Facebook
Curiously recurring C++ bugs at Facebook
Use -fsanitize-address and -fsanitize-address-use-after-scope
Use -Wshadow, and deal with noisy warnings
Patterns and Techniques Used in the Houdini 3D Graphics Application (Mark Elendt)
CppCon 2018: Mark Elendt “Patterns and Techniques Used in the Houdini 3D Graphics Application”
Vector that uses realloc() instead of new/malloc(). Significantly faster than std::vector, but has problems with objects that are not std::trivially_relocatable.
- Copy-on-write used in several places; paged arrays to used copy-on-write in arrays
Reference-counted strings to avoid copying strings. Bunch of constexpr stuff used to make static initialization (i.e. program startup) faster.