jianrong-rtc / Cpp_Goodies

Links to various cpp patterns or tutorials

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cpp_Goodies

Links to various cpp patterns or tutorials

Tutorials / Links collections

  • C++ Developer Roadmap - “Where should I start? What and in what order should I study? What books should I read?”
  • Awesome Modern C++ - A collection of resources on modern C++.
  • Awesome C++ - A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.
  • awesome-hpp - A curated list of awesome header-only C++ libraries
  • Single-file libraries - Single-file public-domain/open source libraries with minimal dependencies
  • C++20/17/14/11 overview - Summarized overview
  • cpp-cheat-sheet - C++ Data Structures and Algorithms Cheat Sheet
  • More C++ Idioms - Aimed toward: Anyone with an intermediate level of knowledge in C++ and supported language paradigms
  • CPP C++ Papyrus
  • C++ CHEATSHEET - The cheatsheet focus is both on the language as well as common classes from the standard library.
  • sanfoundry - C++ examples cover a wide range of programming areas in Computer Science
  • Cpp-Learning-Resources - This document is a collection of high quality c++ learning materials for both new and experienced c++ programmers.*
  • The Algorithms - C++ - The repository is a collection of open-source implementation of a variety of algorithms implemented in C++
  • atomics - C++ links: atomics, lock free, memory model
  • Cpp20 - This is the code repository for my book "C++20 - Get the Details"
  • MV(X) - MV(X)
  • croc - Clean Architecture
  • GETTERS AND SETTERS - This article deals with getters and setters in C++.
  • C++17 STL Cookbook - This is the code repository for C++17 STL Cookbook, published by Packt.
  • 30 Seconds of C++ - 30 Seconds of C++ (STL in C++)
  • Cloud Design Patterns - These design patterns are useful for building reliable, scalable, secure applications in the cloud.
  • Messaging Patterns in Service-Oriented Architecture part 1, part 2 - Messaging Patterns Catalogue Within SOA Context
  • Queueing theory - Queueing theory: an introduction for software development

CMake

Reactive systems

  • C++ Reactive Programming - Book covers the essential functional reactive concepts that will help you build highly concurrent, event-driven, and asynchronous applications in a simpler and less error-prone way
  • RxCpp - The Reactive Extensions for C++ (RxCpp) is a library of algorithms for values-distributed-in-time
  • tower120 - Simple only reactive C++ library.
  • schlangster - Data dependencies between state and event flows
  • snakster - C++React is reactive programming library for C++14
  • Elma - Elma is an event loop and process manager for embedded and reactive systems.
  • µReact - Minimalistic reactive library for c++

Delegate

  • The Impossibly Fast C++ Delegates, Fixed
  • marcmo - Small delegate implementation.
  • bdiamand - Fixed-size C++ delegates - efficient alternatives to std::function.
  • nikitablack - C++ code tests and examples
  • EnTT - Generic, type-safe delegates in C++ (revised)
  • Asynchronous Multicast Delegates - A C++ delegate library that supports synchronous and asynchronous function invocation on any C++17
  • rosbacke - Embedded friendly std::function alternative. Never heap alloc, no exceptions. Is trivially_copyable.
  • gammasoft71 - Modern c++17 library containing multicast delegate and event classes on Windows, macOS, Linux, iOS and android.
  • Unbelievably Fast Delegate - Delegate is an unbelievably fast, lightweight, and 0-overhead function container.
  • Armillus - Blazing fast, lightweight, safe, heapless, non-templated and header-only replacement for std::function for C++ 17 and beyond.

Observable

  • ddinu - Generic observable objects and reactive expressions for C++
  • reactive-v4-observable - Event-driven library with statefull observable obejcts.
  • rocket - Fast C++ Observer Pattern
  • Sigslot - Sigslot is a header-only, thread safe implementation of signal-slots for C++.
  • Signals - library is optimized for video games. signal-slot-benchmarks!!! with sources of plenty libraries
  • observer_ptr - observer-ptr is a single-file header-only library with a variant of std::experimental::observer_ptr for C++98 and later.
  • Observable Library - Library to use the observer pattern in C++11 programs with observable/observer classes or signals/slots.
  • observer - An observer pattern / signal slot pattern that can ignore extra parameters like Qt's signals and slots.
  • prettybxp - An implementation of the observer pattern by c++11
  • Proto - A dependency free, single-header C++17 signals and slots implementation.

Property

  • CPP-NotificationCenter - A C++ API inspired by Cocoa's NSNotificationCenter API.
  • bindey - provides the basic building block of MVVM -- an observable "Property" and a databinding mechanism.
  • BODEN - Property/Notifier
  • C++ PropertySystem - this library are a wrapper around a value and a signal
  • xproperty - C++ properties and observer pattern
  • EntityPlus - EntityPlus is an Entity Component System library
  • Event notifier - A C++ header-only library that lets you connect events to functions with a small and intuitive interface.
  • gammasoft71_properties - another c#-like property accessor for C++11 and above.
  • Tectu - A library that brings C# like properties to modern C++.
  • PropertyEvent - This header only repository include the files required for the creation of an event system (not thread safe).

MPMC queue (multi-consumer multi-producer)

  • moodycamel::ConcurrentQueue - An industrial-strength lock-free queue for C++.
  • Awesome Lock-Free - A collection of resources on wait-free and lock-free programming.
  • SeaStar - SeaStar is an event-driven framework allowing you to write non-blocking, asynchronous code in a relatively straightforward manner
  • eventpp - C++ library for event dispatcher and callback list
  • atomic_queue - C++11 multiple-producer-multiple-consumer lockless queues based on std::atomic<>
  • craflin - A lock-free multi-producer multi-consumer ring buffer FIFO queue.
  • SPSC_Queue - A highly optimized single producer single consumer message queue C++ template
  • WFMPMC - A bounded wait-free(almost) zero-copy MPMC queue written in C++11, which can also reside in SHM for IPC
  • lockfree_mpmc_queue - Lockfree, atomic, multi producer, multi consumer, C++, in process and inter-process queue

Event bus

  • EventBus - Simple and very fast event bus
  • DeveloperPaul123 - eventbus is a simple, header only C++17 event bus library
  • courier - A simple, lightweight C++17 event bus/dispatcher.
  • mmcshane - It's an event bus. Subscribe to events. Publish events.
  • WormHoles - WormHoles is a multiplatform header-only library implementing a general and threadsafe event bus.
  • Events - Event system that allows for clients to attach callbacks to a host which then can be invoked at any time
  • PubBus - PubBus is a simple, header-only implementation of a MessageBus.
  • Microcontroller message bus - Microcontroller message bus
  • Ichor - C++ framework/middleware for thread confinement and dependency injection.
  • DeveloperPaul123 - A simple, header only event bus library written in modern C++17.

Threading and concurancy

  • ThreadPool - This is a pure (which means it doesn't depend on any platform) and exception-safety C++ threadpool
  • cpptask - "cpptask" is an open source library which implements load balanced task scheduler for developing parallel C++ programs.
  • concurrencpp - concurrencpp is a tasking library for C++ allowing developers to write highly concurrent applications easily and safely by using tasks, executors and coroutines.
  • Async++ - Async++ is a lightweight concurrency framework for C++11
  • Marl - Marl is a hybrid thread / fiber task scheduler written in C++ 11.
  • riften::Thiefpool - A blazing-fast, lightweight, work-stealing thread-pool for C++20
  • transwarp - C++ library for task concurrency
  • Marl - Marl is a hybrid thread / fiber task scheduler written in C++ 11.
  • q - A platform-independent promise library for C++, implementing asynchronous continuations.
  • enkiTS - Task Scheduler for creating parallel programs

Actor frameworks

  • actor-zeta - virtual actor model implementation featuring lightweight & fast and more
  • microAkka - Akka framework in C++ on microcontrollers
  • C++ Actor Framework - The qb framework is a thin-layer multicore-optimized the Actor model
  • Rotor - rotor is event loop friendly C++ actor micro framework.
  • libagents - A multi-threaded C++11 implementation of the Actor Model
  • Theron - For sources and doc http://www.ashtonmason.net/portfolio/theron/
  • Theron++: An Actor Framework for C++ - Theron++ is an actor framework conforming to the Theron API with extensions for distributed communication
  • RStein.AsyncCpp - threadless actors (agents)
  • sobjectizer - An implementation of Actor, Publish-Subscribe, and CSP models in one rather small C++ framework
  • qpcpp - for building modern embedded software as systems of asynchronous, event-driven active objects (actors)
  • protoactor-cpp - Ultra-fast, distributed, cross-platform actors.
  • artpaul - Actors are light-weight objects, and they interact fully asynchronously with messages.
  • christianparpart - Actor Model library. It was written purely out of fun.
  • Asynchronous Agents Library - The Agents Library is a C++ template library that promotes an actor-based programming model and in-process message passing for coarse-grained dataflow and pipelining tasks.
  • syscpp - ActorThread: Active Object pattern in C++
  • HAM-2015/CPP-Actor-framework -
  • libprocess - Library that provides an actor style message-passing programming model
  • Light Actor Framework - Laughably simple yet effective Actor concurrency framework for C++20
  • μActor - μActor: Stateful Serverless at the Edge. Platform for running actors on various devices.
  • React++ - A lightweight C++ actor library. A thesis

Serialization

  • cpp-serializers - Benchmark comparing various data serialization libraries (thrift, protobuf etc.) for C++
  • FlatBuffers - cross platform serialization library
  • zpp serializer - A single header only standard C++ serialization framework.

Data reflection

Design pattern

Logging

  • spdlog - Fast C++ logging library.

Date

  • Date - Several separate C++11/C++14/C++17 libraries for date topics. Timezone library, ISO week date calendar, Julian calendar, Islamic calendar.

Finite state machine

  • TinyFSM - simple finite state machine library for C++, designed for optimal performance and low memory footprint.
  • Another Finite State Machine - afsm is a finite state machine C++14 library designed for usage in multithreaded asynchronous environment.
  • HFSM2 - Header-only heriarchical FSM framework in C++11, with fully statically-defined structure (no dynamic allocations), built with variadic templates.
  • fea_state_machines - A buffet of state machines.
  • State machine - This repository contains code referenced in state-machine themed series of blog posts under sii.pl/blog/.
  • HSMCPP - C++ based Hierarchical / Finite State Machine library oriented for embedded and RTOS systems.

Libraries

library: a collection of types, functions, classes, etc. implementing a set of facilities (abstractions) meant to be potentially used as part of more that one program.

  • Folly - Folly (acronymed loosely after Facebook Open Source Library) is a library of C++14 components designed with practicality and efficiency in mind. Folly contains a variety of core library components used extensively at Facebook.
  • Facebook Template Library - Fatal (Facebook Template Library) is a library for fast prototyping software in modern C++.
  • tools - header-only libraries written in modern C++ (11, 14, 17, 20).
  • C++ libraries - A curated list with C++ libraries
  • The Reactive C++ Toolbox - The Reactive C++ Toolbox is an open source library of C++20 components designed for efficient aynchronous IO network applications on the Linux platform.
  • FunctionalPlus - helps you write concise and readable C++ code.
  • Yato - useful snippets and abstractions for C++ development.
  • cppfan - A collection of C++ foundation class.
  • apex - providing shims for upcoming C++ standards library features
  • Flutter Engine - Flutter is Google's SDK for crafting beautiful, fast user experiences for mobile, web, and desktop from a single codebase.
  • libsolace - libSolace is a library to help to build a mission-critical application.
  • vrm_core - Lightweight C++14 utility library. (Modernized, stripped and cleaned-up version of SSVUtils.)
  • bs::framework - library that aims to provide a unified foundation for the development of real-time graphical applications, whether games, engines or tools
  • bx - Base library used across multiple projects
  • RxLib - collection of cpp patterns
  • eCAL - eCAL - enhanced Communication Abstraction Layer
  • CppCommon - C++ Common Library contains reusable components and patterns for error and exceptions handling, filesystem manipulations, math, string format and encoding, shared memory, threading, time management and others.

Software

  • MobaXterm - MobaXterm provides all the important remote network tools (SSH, X11, RDP, VNC, FTP, MOSH, ...)
  • ghidra-sre - A software reverse engineering (SRE) suite of tools developed by NSA's Research Directorate in support of the Cybersecurity mission

Code bloat

Embedded

Embedded oriented libs

  • ETL - Embedded Template Library
  • embxx - Embxx is Embedded C++ library
  • theCore - framework for various microcontroller applications, with or without RTOS (bare-metal).
  • libcpp - C++ standard library for embedded systems

Not recommend due to code bloat -> anything what's starts "header only"

  • kaguya - C++ binding to Lua
  • nlohmann - JSON for Modern C++
  • quicktype - Convert JSON into gorgeous, typesafe code in any language.

LUA

  • luapower/oo - Object system for Lua with virtual properties and method overriding hooks
  • LuaWOO - A library that provides advanced Object Oriented Programming (OOP) mechanisms for the Lua language.
  • class2 - Object-oriented programming for Lua/ComputerCraft. Version 2.
  • Luaoop - Lua library to do OOP (Object Oriented Programming).

On list

  • SWIG
  • MQTT-Reactive - portable and non-blocking MQTT client
  • eMQTT5 - An embedded MQTTv5 client in C++ with minimal footprint, maximal performance
  • Arcana.cpp - Arcana is a collection of general purpose C++ utilities
  • xenium - xenium is a header-only library that provides a collection of concurrent data structures and memory reclamation algorithms
  • EmbeddedInfraLib - EmbeddedInfraLib is a set of C++ libraries and headers that provide heap-less, STL like, infrastructure for embedded software development.
  • WLib - The goal of WLib is to create a lighter and safer alternative to C++ STL.
  • libunifex - The 'libunifex' project is a prototype implementation of the C++ sender/receiver async programming model
  • CppCommon - C++ Common Library contains reusable components and patterns
  • CoroBase - Coroutine-Oriented Main-Memory Database Engine
  • FastFlow - FastFlow: high-performance parallel patterns and building blocks in C++
  • distortos - object-oriented C++ RTOS for microcontrollers
  • Bitsery - Header only C++ binary serialization library.
  • string_utils - Utility functions for strings using on C++17 <string_view> and to avoid unnecessary string copies.
  • pystring - Pystring is a collection of C++ functions which match the interface and behavior of python's string class methods using std::string.
  • libchain - Easy to use std::string enhancements.
  • PureMVC - PureMVC is a lightweight framework for creating applications based upon the classic Model-View-Controller design meta-pattern.
  • PureMVC++ - C++ version of the PureMVC architecture.
  • NoesisGUI-NativeSDK - Simple and consistent way to present and interact with data using MVVM patterns. Provides a clean separation of business logic from UI.
  • GUI-lite - The smallest header-only GUI library(4 KLOC) for all platforms
  • Monochrome - Monochrome is an open source cross-platform GUI library
  • lxgui - GUI library
  • elapsed_timer - Elapsed time for code blocks execution written in C++11
  • simple_match - Simple, Extensible C++ Pattern Matching Library
  • flags - Command line parser
  • csv2 - csv reader/writer
  • dtl - DIFF template library written
  • cyan - A lock-free, wait-free, event-driven, cross-platform, thread pool-backed asynchronous execution library in C++.
  • libjwdpmi - This library aims to be a complete development framework for DPMI (32-bit DOS) applications, written in C++20.
  • Ouroboros - Embedded NoSQL storage of data.
  • Veho - Auto-optimizing modern C++11 CAN interface generator
  • GuinsooDB - embedded database
  • libcappuccino - C++17 Cache Data Structure Library
  • sanitizers - Google android AddressSanitizer, ThreadSanitizer, MemorySanitizer
  • iceoryx - zero-copy inter-process-communication
  • pubsublite - Lightweight header-only for intra-process publish subscribe (within a single app). Supports channels with multiple publishers and subscribers.
  • Fleece - A super-fast, compact, JSON-equivalent binary data format
  • Eonblast Fleece 0.3.1 Lite - Fleece is optimized for fastest Lua to JSON conversion and beats other JSON packages by around 10 times.
  • Plain Old Data Serializer (PODS) - Fast and simple C++ serializer
  • IncludeOS - A minimal, resource efficient unikernel for cloud services
  • ZenJSON - Lightweight, ultra fast JSON parser/generator for C++ with intuitive API

About

Links to various cpp patterns or tutorials