All Projects → WillBrennan → learn_stl

WillBrennan / learn_stl

Licence: MIT license
Learning how the C++ Standard Library works; by implementation

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to learn stl

Ziglearn
Repo for https://ziglearn.org content. Get up to speed with Zig quickly.
Stars: ✭ 135 (+486.96%)
Mutual labels:  learning-by-doing
100daysofcode
#100DaysOfCode - Learn by developing 100 unique apps to explore exciting tech stacks
Stars: ✭ 196 (+752.17%)
Mutual labels:  learning-by-doing
Rl learn
我的强化学习笔记和学习材料📖 still updating ... ...
Stars: ✭ 234 (+917.39%)
Mutual labels:  learning-by-doing
Carmel
The Open Digital Innovation Marketplace
Stars: ✭ 136 (+491.3%)
Mutual labels:  learning-by-doing
Kubernetes The Hard Way Aws
AWS version of Kelsey's kubernetes-the-hard-way
Stars: ✭ 179 (+678.26%)
Mutual labels:  learning-by-doing
Auth Jwt
A demo to learn JWT by reverse engineering
Stars: ✭ 208 (+804.35%)
Mutual labels:  learning-by-doing
Postgres Showcase
Postgres features showcase (commented SQL samples) for beginners
Stars: ✭ 121 (+426.09%)
Mutual labels:  learning-by-doing
clonings
A project for learning Clojure, based on rustlings.
Stars: ✭ 32 (+39.13%)
Mutual labels:  learning-by-doing
Nodejs Roadmap
【🔥持续更新中】Node.js 实战学习路线
Stars: ✭ 188 (+717.39%)
Mutual labels:  learning-by-doing
Functional intro to python
[tutorial]A functional, Data Science focused introduction to Python
Stars: ✭ 228 (+891.3%)
Mutual labels:  learning-by-doing
Ffmpeg Video Player
An FFmpeg and SDL Tutorial.
Stars: ✭ 149 (+547.83%)
Mutual labels:  learning-by-doing
Docker Workshop
Docker workshop
Stars: ✭ 174 (+656.52%)
Mutual labels:  learning-by-doing
Hacktoberfest
This hacktoberfest project exists to help you submit your first Pull Request and welcome you to the world of open source!
Stars: ✭ 216 (+839.13%)
Mutual labels:  learning-by-doing
Monthly Challenges
Repository containing monthly challenges about quantum computing.
Stars: ✭ 126 (+447.83%)
Mutual labels:  learning-by-doing
Today I Learned
📝 Today I Learned - A list of all things I learn on daily basis.
Stars: ✭ 240 (+943.48%)
Mutual labels:  learning-by-doing
Dive Into Machine Learning
Dive into Machine Learning with Python Jupyter notebook and scikit-learn! First posted in 2016, maintained as of 2021. Pull requests welcome.
Stars: ✭ 10,810 (+46900%)
Mutual labels:  learning-by-doing
Learn gnugrep ripgrep
Example based guide to mastering GNU grep and ripgrep
Stars: ✭ 204 (+786.96%)
Mutual labels:  learning-by-doing
gameframework2d
Core Example Program for 2D Game Programming Class
Stars: ✭ 16 (-30.43%)
Mutual labels:  learning-by-doing
Project Based Learning Frontend
List of Project based Tutorials for frontend development
Stars: ✭ 240 (+943.48%)
Mutual labels:  learning-by-doing
Wasm By Example
Wasm By Example is a website with a set of hands-on introduction examples and tutorials for WebAssembly (Wasm)
Stars: ✭ 226 (+882.61%)
Mutual labels:  learning-by-doing

Learn STL

Learning about the C++ Standard Library by Implementation

Ever wondered how std::tuple is implemented? How std::get works? Well I started implementing this to find out just that.

The standard library heavily relies on many C++ Idioms and unusual language features, by implementing the library you can get a bit more familiar with them!

Each of the components have documentation in /docs explaining how they work, what idioms the use, and whats interesting about them.

Hopefully you'll find this an interesting read!

Feel free to submit a PR adding more components or improving library / documentation!

Vocab Types

any

Any is the de-facto type-erasure method in C++, it provides type-safe container for single values of any type. The implementation provides an introduction to polymorphism in C++.

optional

How can you store an object without a default-constructor on the stack? Well with a union is how, but what is this weird special type.

tuple

Tuple heavily depends on variadic templates and std::index_sequence, and isn't obvious how its implemented. It's a refreshing look at features which aren't used day-to-day.

variant

Another component thats heavily dependent on variadic templates, it employs more template metaprogramming tricks than tuple. It also provides an interesting use case of aligned_storage.

Containers

array

Array is deceptively simple, but how are its constructors and destructors implicity declared? Why is array constexpr but vector isn't, and what is aggregate-initialization? Understanding Array requires a strong comprehension of these often over-looked language features.

vector

Everyone knows std::vector right? But why is reserving so important? And what is std::allocator and why wrap it in std::allocator_traits?

valarray

valarray provides an introduction to expression-templates. It stores elements in a vector, and it provides element-wise unary and binary operations. It won't create any temporaries and will only perform one iteration as it evaluates the expression for each resultant element.

Memory Mangement

unique_ptr

unique_ptr is pretty simple, but its always good to understand what std::default_deleter does and how dangerous aggregate initialisation can be

addressof

addressof might seem like a verbose way of calling &T; but why does it exist? And why is it constexpr in C++17 and what does a constexpr pointer mean?

allocator

allocator is relatively simple, but why does it define is_always_equal and propagate_on_container_move_assignment.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].