L'objectif de cette page est de constituer une liste exhaustive de bibliothèques C++ open-source, afin que lorsqu'on a besoin d'une implémentation d'une fonctionnalité particulière, on ne perde pas de temps à chercher sur le web (
DuckDuckGo
,
Google
,
Bing
, etc.)
Si vous connaissez une bibliothèque qui pourrait être utile à d'autres, veuillez ajouter un lien vers celle-ci ici. Il n'y a aucune restriction sur ce qui peut être inclus, sauf que les
sources
de la bibliothèque doivent être facilement
disponibles
au téléchargement.
Cette page est fournie "telle quelle" - avec l'espoir d'être utile, mais sans aucune garantie. Des liens obsolètes, trompeurs ou erronés peuvent apparaître ici. Si vous en avez remarqué un, ce serait formidable que vous corrigiez l'erreur.
Une chaîne d'outils de construction open-source (MIT) et multiplateforme qui vise à approcher la commodité de Rust Cargo pour le développement et l'empaquetage de projets C/C++ tout en offrant plus de profondeur et de flexibilité, particulièrement dans le système de construction.
Un script cmake qui ajoute des capacités de gestion de dépendances à cmake. Il est construit comme une fine enveloppe autour du module FetchContent de cmake qui ajoute le contrôle de version, la mise en cache, une API simple et plus encore.
Un gestionnaire de paquets pour supercalculateurs, Linux et macOS. Il facilite l'installation de logiciels scientifiques. Il n'est pas lié à un langage particulier.
Un framework DSP/DFT rapide, moderne, C++17, open-source et multiplateforme, prend en charge le rééchantillonnage audio, les filtres FIR/IIR, Biquad (SSE, AVX, AVX-512, ARM NEON). (
Src
)
SoundTouch est une bibliothèque de traitement audio open-source multiplateforme pour modifier le tempo, la hauteur et les taux de lecture des flux audio ou des fichiers audio. (
Src
)
Une boîte à outils de reconnaissance vocale rapide écrite entièrement en C++ et utilisant la bibliothèque de tenseurs ArrayFire et la bibliothèque d'apprentissage automatique flashlight pour une efficacité maximale.
Chromaprint est une bibliothèque d'empreintes audio conçue pour identifier des contenus audio quasi identiques. Elle échange précision et robustesse contre des performances de recherche. Chromaprint peut utiliser plusieurs bibliothèques FFT - FFmpeg, FFTW3, KissFFT ou vDSP. (
Src
)
La bibliothèque cliente MusicBrainz (libmusicbrainz), également connue sous le nom mb_client, est une bibliothèque de développement destinée aux développeurs souhaitant ajouter des capacités de recherche MusicBrainz à leurs applications. La bibliothèque prend en charge Windows, Linux et Mac OS X (
Src
)
FLAC signifie
F
ree
L
ossless
A
udio
C
odec, ce qui signifie que l'audio compressé en FLAC n'a aucune perte de qualité. FLAC se distingue comme le codec audio sans perte le plus rapide et le plus largement pris en charge, non propriétaire et non soumis à des brevets.
Une bibliothèque C avec un wrapper C++ pour lire et écrire des fichiers contenant du son échantillonné (par exemple WAV, AIFF) via une interface de bibliothèque standard unique. (
Src
)
Une bibliothèque open-source multiplateforme pour lire, écrire et manipuler les balises ID3v1 et ID3v2, et récupérer certaines informations d'en-tête mp3 de base comme le débit binaire. Cependant, nous recommandons maintenant de migrer vers
taglib
:)
La bibliothèque TagLib Audio Metadata est une bibliothèque pour lire et éditer les métadonnées de plusieurs formats audio populaires : commentaires ID3v1, ID3v2 pour les fichiers MP3, commentaires Ogg Vorbis et balises ID3 ainsi que commentaires Vorbis dans les fichiers FLAC, MPC, Speex, WavPack, TrueAudio, WAV, AIFF, MP4 et ASF. (
Src
)
Les 'Google Performance Tools' incluent une implémentation malloc haute performance multi-thread ainsi que des outils pour évaluer l'allocation de tas et l'utilisation du CPU.
Le framework logiciel Apache Thrift, pour le développement de services interlangages évolutifs, combine une pile logicielle avec un moteur de génération de code pour construire des services qui fonctionnent efficacement et de manière transparente entre C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml et Delphi et d'autres langages. (
Src
)
Un framework RPC de qualité industrielle utilisé dans toute Baidu, avec plus de 1 000 000 d'instances et des milliers de types de services. (
Src
) (
Doc
)
Une bibliothèque cliente HTTP multiplateforme axée sur la facilité d'utilisation et la vitesse, prenant en charge la mise en cache des réponses HTTP et plus encore.
F
ast
P
rogrammable
N
exus
N
etwork. Cadre de service RPC entièrement asynchrone haute performance. Prend simultanément en charge HTTP, WebSocket, TCP et UDP fiable. Supporte le développement de serveurs à charge ultra-élevée, avec les SDK clients correspondants.
Une boîte à outils de développement C/C++ pour les liaisons de données XML, les services Web WSDL/SOAP/XML rapides, WS-Security, les services RESTful JSON/XML-RPC
Un framework qui fournit une prise en charge JSON-RPC (appel de procédure distante) multiplateforme pour C++, entièrement compatible JSON-RPC 2.0 & 1.0.
Un framework C++ incluant un serveur http multithreadé rapide, HTML5 Websockets, SSL, authentification X509 et HTTP, compression, cookies et gestion avancée des sessions, IPv4 et IPv6 (CeCILL-C).
Cadriciel multi-plateforme C++ pour la capture réseau, l'analyse et la création de paquets. Fournit des encapsulations C++ pour de nombreux moteurs de traitement de paquets populaires tels que libpcap, Npcap, WinPcap, DPDK, AF_XDP et PF_RING. (
Src
)
Un framework multiplateforme riche en fonctionnalités qui apporte une fonctionnalité RESTful asynchrone (communication sécurisée via HTTP) aux applications C++14.
Fournit des types de données atomiques et des opérations sur ces types de données, ainsi que des contraintes d'ordonnancement de la mémoire requises pour coordonner plusieurs threads via des variables atomiques.
Simplifie l'utilisation des mécanismes de communication et de synchronisation interprocessus et offre une large gamme de ceux-ci : mémoire partagée, fichiers mappés en mémoire, sémaphores, mutex, variables condition et types de mutex améliorables, versions nommées des objets de synchronisation, verrouillage de fichiers, files de messages.
Fournit des structures de données concurrentes non bloquantes (également appelées lock-free) : une file d'attente, une pile et un tampon circulaire (spsc_queue).
Fournit des intrinsèques SIMD/vectorielles portables en performance et agnostiques à la longueur. Prend en charge : SSE3, SSE4, AVX*, NEON, SVE*, WASM SIMD, RISC-V, POWER. (
Doc
)
Intel® TBB est une bibliothèque C++ multiplateforme pour la programmation parallèle en mémoire partagée et le calcul hétérogène. La bibliothèque fournit : des algorithmes parallèles génériques, des conteneurs concurrents, un allocateur de mémoire évolutif, un ordonnanceur de tâches à vol de travail et des primitives de synchronisation de bas niveau. (
Src
) (
Doc
)
Un modèle de programmation pour écrire des applications HPC portables en performance, utilisant CUDA, HIP, SYCL, HPX, OpenMP et les threads C++ comme backends (
Doc
)
Une bibliothèque de synchronisation C/C++ basée uniquement sur les mutex : roue, verrou de lecture-écriture, verrou de maintenance, files d'attente de travail
La bibliothèque permet d'obtenir les options du programme, c'est-à-dire des paires (nom, valeur) de l'utilisateur, via des méthodes conventionnelles telles que la ligne de commande, le fichier de configuration et les variables d'environnement.
Une interface C++ multiplateforme (officielle) pour la bibliothèque GUI populaire GTK, incluant des rappels de type sécurisé et un ensemble complet de widgets facilement extensibles via l'héritage.
gtkmm
utilise STL, incluant
string
s, conteneurs et itérateurs. UTF8 est pris en charge. (
Src
) (
Doc
)
Cette bibliothèque permet d'obtenir les options du programme, c'est-à-dire des paires (nom, valeur) de l'utilisateur, via des méthodes conventionnelles telles que la ligne de commande, le fichier de configuration et les variables d'environnement.
Une bibliothèque C++17 pour l'analyse de ligne de commande qui fournit une interface concise et déclarative avec prise en charge des sous-commandes, des validateurs et la possibilité de choisir le format d'options de ligne de commande GNU, POSIX ou X11.
Une bibliothèque qui implémente le traitement des drapeaux de ligne de commande. Elle inclut une prise en charge intégrée des types standards tels que string et la capacité de définir des drapeaux dans le fichier source où ils sont utilisés.
Une bibliothèque de modèles C++ simple pour analyser les arguments de ligne de commande. La bibliothèque fournit une interface orientée objet simple et flexible.
Une bibliothèque C++17 fournissant des liaisons statiques C++ avec vérification de types permettant l'analyse syntaxique directe vers les structures de données utilisateur sans allocation de bibliothèque, modes push/pull, support d'allocateur, constexpr
**Note:** Le texte à traduire dans ce fragment HTML est uniquement "JOST". Cependant, comme il s'agit d'un nom propre (probablement un acronyme ou un nom de projet) et qu'il n'y a pas d'autres éléments textuels à traduire, la traduction n'est pas nécessaire. Le code HTML reste inchangé.
**Note:** Le texte "JSON++" n'a pas été traduit car il s'agit d'un terme spécifique au C++ (nom de bibliothèque). Aucune autre traduction n'était nécessaire dans ce fragment HTML car il ne contenait que des balises HTML, des attributs et un terme technique C++.
La bibliothèque C++ JSON la plus pratique actuellement en usage. Lisez et écrivez des structures complexes à n'importe quel niveau avec un seul appel de fonction. Les performances sont approximativement la moitié de celles de RapidJSON.
Une bibliothèque de cartes bidirectionnelles qui propose des conteneurs associatifs tels que
bimap<X,Y>
dans lesquels à la fois
X
et
Y
peuvent être utilisés comme clé. (
Src
)
Une bibliothèque qui implémente plusieurs conteneurs bien connus, incluant des conteneurs similaires à la bibliothèque standard, ainsi que des conteneurs récursifs, et de nouveaux conteneurs utiles :
flat_map
,
flat_set
,
flat_multimap
,
flat_multiset
,
stable_vector
,
static_vector
,
small_vector
,
devector
. (
Src
)
Une bibliothèque pour travailler avec des collections hétérogènes de
tuples
. Fournit un ensemble de conteneurs (
vector
,
list
,
set
et
map
), ainsi qu'une présentation transformée de leurs données sous-jacentes, également appelée
views
." (
Src
)
Une implémentation de
files de priorité
avec plus de fonctionnalités et des caractéristiques de performance différentes que la bibliothèque standard. (
Src
)
Allocateurs conformes à la bibliothèque standard pour mémoire statique de taille fixe et basée sur la pile + un autre allocateur conforme permettant l'allocation personnalisée de limites
Eggs.Variant est une union discriminée générique, type-safe pour C++11/14/17. Il est particulièrement remarquable pour son excellente prise en charge
constexpr
.
Conteneur non ordonné de type "sac" qui surpasse les conteneurs
std::
dans les scénarios à forte modification tout en maintenant des pointeurs valides vers les éléments non effacés malgré les insertions et suppressions. Compatible C++98/11/14/etc. Voir aussi
P0447
(
std::hive
). (
Source
)
Une implémentation de
std::list
qui sacrifie le splicing de plages pour une meilleure utilisation du cache, offrant des insertions, suppressions et itérations plus rapides. Compatible C++98/03/11/14/17/20/23/26/etc. (
Src
) (
Doc
)
Une extension et optimisation de l'idiome "swap-and-pop"/"move-and-pop" pour les conteneurs à accès aléatoire afin d'améliorer les performances d'effacement des conteneurs à accès aléatoire, lorsque l'ordre post-effacement n'est pas important. Couvre les effacements simples, par plage et de style
std::erase_if
. Compatible C++98/11/14/etc. (
Source
)
Un conteneur de remplacement direct pour
std::queue
avec de meilleures performances que
std::deque
et
std::list
dans un contexte de file d'attente. Compatible C++98/11/14/etc. (
Src
)
Un conteneur de remplacement direct pour
std::stack
avec de meilleures performances que
std::vector
et
std::deque
dans un contexte de pile. Compatible C++98/11/14/etc. (
Src
)
Un variant adapté au temps réel/embarqué (c'est-à-dire compatible avec
-fno-exceptions
/
-fno-rtti
), jamais vide ciblant C++11. Rapide, empêche de nombreuses conversions implicites indésirables.
Une implémentation intrusive C++11 de conteneurs et structures de données haute performance tels qu'un
arbre rouge-noir
, un
arbre d'intervalles
et une carte d'intervalles.
Une boîte à outils cryptographique modulaire et portable assez complète offrant aux développeurs un vaste éventail de chiffrements par blocs, fonctions de hachage à sens unique, modes de chaînage, générateurs de nombres pseudo-aléatoires, cryptographie à clé publique et une pléthore d'autres routines. (
Src
)
Le Galera Cluster est la bibliothèque de réplication multi-maître synchrone (Galera) et une API Write Set Replication (WSREP) pour MySQL/MariaDB (
Src
)
Une bibliothèque de pilote officielle C++11 pour MongoDB (
Doc
). Elle propose des API optimisées pour les opérations CRUD, l'indexation et l'agrégation. Prenant en charge BSON et incluant le regroupement de connexions et les mécanismes d'authentification, elle offre des solutions hautes performances et évolutives pour développer des applications C++ exploitant MongoDB.
Un système ORM (Object-Relational Mapping) open-source, multiplateforme et multi-base de données pour C++. ODB prend en charge les bases de données relationnelles MySQL, SQLite, PostgreSQL, Oracle et Microsoft SQL Server ainsi que les standards de langage C++98/03 et C++11.
**Note** : Le texte ne contient aucun contenu à traduire en dehors des balises HTML et des termes C++ qui doivent être préservés. La structure HTML et tous les termes techniques (QUINCE, ORM, EDSL, Boost) restent inchangés conformément aux instructions.
Une bibliothèque de base de données
O
bjet
R
elationnel
M
apping (ORM) pour C++/Qt, prend en charge la plupart des bases de données courantes, la sérialisation (JSON, binaire, XML) ; serveur web HTTP autonome multi-thread
Un client Redis écrit en C++ 11, prenant en charge Redis Sentinel, Redis Cluster, le pipeline, les transactions, pubsub, le pool de connexions et une interface de type STL
Une bibliothèque de bases de données basée sur des plugins qui intègre des requêtes SQL dans du code C++ standard ; les backends pris en charge incluent : DB2, Firebird, MySQL, ODBC (backend générique), Oracle, PostgreSQL, SQLite3. (
Src
) (
Doc
)
Une bibliothèque middleware C++ pour bases de données qui prend en charge plusieurs systèmes de bases de données SQL : Oracle, SQL Server, DB2, Sybase, MySQL, PostgreSQL, SQLite, Informix, InterBase / Firebird, SQLBase, SQL Anywhere, ODBC, MariaDB. (
Src
) (
Doc
)
Un interpréteur C++ interactif, construit sur Clang et LLVM pour tirer parti du RAD, créer des scripts, du scripting embarqué et de la génération de code à l'exécution. (
Src
)
Un analyseur syntaxique et moteur d'évaluation d'expressions mathématiques en temps d'exécution extrêmement efficace, simple à utiliser et facile à intégrer. ExprTk prend en charge de nombreuses formes de sémantiques fonctionnelles, logiques et de traitement vectoriel et est très facilement extensible.
S
imple
D
irectMedia
L
ayer : un accès bas niveau multiplateforme (Windows, macOS, Linux, iOS, Android et autres) au matériel audio, clavier, souris, manette et graphique via l'API graphique de la plateforme (OpenGL/Direct3D/Metal/Vulkan) (
Doc
) (
Src
)
S
imple et
F
ast
M
ultimedia
L
ibrary ; multiplateforme (Windows, Linux, macOS et bientôt Android & iOS) ; fournit une interface simple pour faciliter le développement de jeux et d'applications multimédias. Elle est composée de cinq modules : système, fenêtre, graphiques (sur OpenGL), audio et réseau.
S
ound,
I
nput, and
G
raphics
I
ntegration
L
ibrary ; une bibliothèque simple, multiplateforme et minimaliste pour le texte, les formes, l'entrée, l'audio et les images 2D. Plateformes supportées : Windows, Linux et Raspberry Pi
Le C++ Actor Framework (CAF) est une implémentation open-source du modèle d'acteur C++11 offrant des implémentations d'acteurs légères & rapides, du filtrage par motif pour les messages, une messagerie transparente sur le réseau, et plus encore
Réseau, threads, interfaces graphiques, structures de données, algèbre linéaire, apprentissage automatique, analyse XML et texte, optimisation numérique, réseaux bayésiens, et de nombreuses autres tâches
Une bibliothèque d'événements C++ pour les callbacks, le dispatcheur d'événements, et la file d'événements. Avec eventpp, vous pouvez facilement implémenter un mécanisme signal et slot, un modèle éditeur-abonné, ou un modèle observateur.
Freundlich's C++ Toolkit (fcppt) est une collection de bibliothèques visant à améliorer le code C++ général en fournissant de meilleurs types et en utilisant la programmation fonctionnelle.
Une bibliothèque C++20 multiplateforme pour la programmation orientée séquence, similaire aux ranges C++20, mais utilisant un modèle d'itération basé sur des cursors qui est une généralisation des indices de tableau. (Doc)
Implémentation de la Guidelines Support Library (bibliothèque de support des directives) C++ Core, recommandée par Bjarne Stroustrup, Herb Sutter et Co dans les C++ Core Guidelines
Bibliothèque utilitaire générale pour C++14 de DESY: Fonctions et types utilitaires souvent utilisés, y compris des utilitaires de chaînes, des fonctions statistiques et numériques, des conteneurs, des moyens de débogage, etc. (Src)
Une bibliothèque C++ d'exécution pour travailler avec des unités de mesure et les conversions entre elles, ainsi qu'avec des représentations sous forme de chaînes d'unités et de mesures
Une liste de dépôts *-lite (par exemple, span-lite, scope-lite, expected-lite) contenant des implémentations C++98/11 de certains des types de bibliothèque proposés ou déjà normalisés en C++17/20/23, tels que std::span, std::expected etc).
Les bibliothèques standard C++ de demain, dès aujourd'hui ! Une collection de bibliothèques C++ proposées pour la normalisation, qui correspondent aux dernières versions des propositions C++. (Doc)
Un environnement d'exécution C++ moderne et une boîte à outils pour développeurs avec une CLI, un flux de compilation, la mise en réseau, l'intégration d'un registre de paquets, et des bibliothèques modulaires pour construire des applications C++
Une bibliothèque C++(14/17) multiplateforme moderne de style STL et compatible STL implémentant des conteneurs, des ranges, des itérateurs, des traits de type et d'autres outils ; un système d'acteurs ; une interface de configuration type-safe.
Un ensemble d'outils open-source et multiplateforme (Linux/Unix/BSD, incluant Android et OS X) compatibles GPS, tel qu'un démon traducteur et réplicateur pour dispositifs GPS, radios AIS et autres capteurs de navigation.
gpsd
est principalement écrit en C et Python, mais possède également un wrapper C++.
gpsd
est omniprésent dans les systèmes embarqués mobiles. Chaque application Android géolocalisée est indirectement un client
gpsd
. (
Doc
) (
Src
)
Une bibliothèque GUI légère pour C++ avec des dépendances minimales, portable, indépendante du rendu, optimisée pour une utilisation dans des applications compatibles pipeline 3D.
Une boîte à outils GUI C++ multiplateforme (Linux, Windows, MacOS) offrant des fonctionnalités GUI modernes et prenant en charge les graphiques 3D via OpenGL/GLUT. Conçue pour être petite et modulaire. Inclut un constructeur d'interface.
Un framework C++ multiplateforme (Windows, GNU/Linux, macOS) libre et open-source pour écrire des applications GUI avancées utilisant des contrôles natifs. (
Doc
)
Un framework C++17/20 moderne pour créer des applications console, GUI et de tests unitaires sur Windows, macOS, Linux, iOS et Android. (
Src
) (
Doc
)
Ensemble de bibliothèques C++ utilisées pour développer des applications logicielles multiplateformes. Il utilise un C++ moderne et idiomatique et s'intègre parfaitement avec la STL. CopperSpice est dérivé du framework Qt. (
Doc
) (
Src
)
Une petite bibliothèque conçue pour rendre le partage et l'affichage de structures de menus via DBus simple et facile à utiliser. Elle fonctionne à la fois pour QT et GTK+ et facilite la construction de menus.
La traduction du texte "U++" en français reste "U++" car il s'agit d'un nom propre/produit spécifique qui ne se traduit pas. La structure HTML est conservée intacte conformément aux instructions.
Un framework de développement d'applications rapide multiplateforme en C++ axé sur la productivité des programmeurs. Il inclut un ensemble de bibliothèques (GUI, SQL, etc.) et un environnement de développement intégré. (
Src/Bin
)
Une bibliothèque puissante et multiplateforme (Windows, Mac, Linux, iOS, Android, Web) de rendu graphique 2D/3D prenant en charge les shaders, avec des moteurs de rendu : DX, OpenGL, Metal, WebGL, Vulkan, etc. (
Doc
)
Un wrapper C++ pour la
bibliothèque graphique cairo
, une bibliothèque 2D prenant en charge plusieurs périphériques de sortie : X Window, Quartz, Win32, tampons d'image, PostScript, PDF, SVG, OpenGL (expérimental).
Un moteur de rendu logiciel 2D, 3D et isométrique avec une boîte à outils d'interface graphique de bureau, des dépendances minimalistes, conçu pour une maintenance à long terme et pouvant fonctionner sans pilotes accélérés 3D
Ge
nérique
G
raphics
L
ibrary (GEGL) est un framework de traitement d'image basé sur le flux de données, offrant un traitement en virgule flottante et des capacités de traitement d'image non destructif. (
Src
)
Une bibliothèque de dessin vectoriel 2D antialiassé en C sur OpenGL pour les interfaces utilisateur et visualisations, avec des ports vers DX11/Metal/bgfx.
Une bibliothèque graphique 2D open-source écrite en C++.
Skia Graphics Engine
est utilisée dans Google Chrome, Chrome OS, Mozilla Firefox, Android, LibreOffice, Flutter, etc.
Skia
possède plusieurs moteurs : rastérisation logicielle, sortie (PDF), OpenGL, SVG, etc.
Une bibliothèque C++14 multiplateforme pour le traitement générique d'images numériques, rastériseur logiciel 2D, formats d'image illimités (
u8
,
u16
,
u32
,
float
,
double
), Disposition mémoire personnalisée par ordre des bits, Tous les modes de fusion de pixels Photoshop + 11 modes supplémentaires, Modèles de couleur (RGB, HSL, HSV, CMYK, ...), Pipelines gérées en couleur, Prise en charge des espaces colorimétriques (profils icm et indépendants du périphérique), Algorithmes optimisés avec multithreading, Algorithmes optimisés avec extensions SIMD (SSE2), Pools d'images et caches pour optimisations, Stockage en mémoire de séquences d'images animées.
Personnalisée (gratuite uniquement pour un usage non commercial)
Un successeur moderne de GLEW. Abstrait les différences entre certains types de contextes GL, ce qui le rend parfois plus simple à utiliser que GLEW. Utilisé par le projet GTK+ depuis 2015.
Le G3D Innovation Engine est un moteur de jeu 3D open-source, multiplateforme (Windows, Linux, Mac OS) et complet, écrit en C/C++. G3D est utilisé dans des jeux commerciaux, des articles de recherche, des simulateurs et des cours universitaires. Il prend en charge le rendu matériel en temps réel et hors ligne, le lancer de rayons, le chargement de modèles, l'algèbre linéaire et le calcul GP sur les GPU. Prend en charge les formats 3DS, OBJ, MP4, PNG, JPG, MD3 et bien d'autres, inclut une interface graphique native OpenGL personnalisable. (
Src
) (
Doc
)
Un petit moteur de rendu 3D open-source. Il est développé dans le but de créer un moteur graphique offrant les effets visuels époustouflants attendus dans les jeux de nouvelle génération, tout en étant léger et aussi épuré que possible.
Le moteur Irrlicht est un moteur 3D temps réel open-source écrit en C++. Il est multiplateforme, utilisant D3D, OpenGL et ses propres moteurs de rendu logiciel.
Le
O
pen-source
3D
E
ngine (anciennement Amazon's Lumberyard) est un moteur 3D multi-plateforme C++ pour créer des jeux AAA, des mondes 3D de qualité cinéma et des simulations haute fidélité. Inclut la simulation physique, le moteur de script, la mise en réseau et
plus
. (
Doc
)
OGRE est un moteur de rendu graphique orienté objet - une bibliothèque de visualisation polyvalente, adaptée à la visualisation scientifique, aux jeux, à la simulation, à la réalité virtuelle et à d'autres projets graphiques. Il est multiplateforme et très robuste, avec une bonne documentation.
OpenSceneGraph est une boîte à outils graphique 3D open-source haute performance, utilisée par les développeurs d'applications dans des domaines tels que la simulation visuelle, les jeux, la réalité virtuelle, la visualisation scientifique et la modélisation. (
Src
) (
Doc
)
Visualization Toolkit (VTK) est un logiciel open-source pour manipuler et afficher des données scientifiques. Il est livré avec des outils de pointe pour le rendu 3D, une suite de widgets pour l'interaction 3D, et des capacités étendues de traçage 2D.
Une API bas niveau qui supprime de nombreuses abstractions présentes dans les API graphiques de la génération précédente. C'est excellent pour offrir des performances maximales, mais a pour effet secondaire d'exposer plus de complexité au développeur. Heureusement, plusieurs excellents tutoriels existent pour aider à franchir cet obstacle et devenir productif rapidement.
Un projet de bibliothèque open-source pour les développeurs souhaitant prendre en charge les formats d'image graphique populaires comme PNG, BMP, JPEG, TIFF et autres
Un fork de la bibliothèque open-source FreeImage v3.18 pour supporter les mises à jour des codecs d'image et ajuster pour une utilisation confortable. Tous les formats et plugins originaux sont maintenus.
Lecture et écriture d'images statiques, animées, multi-pages avec leurs métadonnées et profils ICC. Capacités de conversion. Cible la simplicité et la vitesse.
Un ensemble de bibliothèques orientées développement de jeux en C/C++ comprenant chargeur/écriveur/redimensionneur d'images, rastériseur de texte de police, conteneurs type-safe, décodeur ogg vorbis, compresseur DXT en temps réel, générateur de bruit de Perlin, lexer pour DSLs personnels, sprintf rapide, et plus.
Thor Vector Graphics est une bibliothèque portable légère utilisée pour dessiner des scènes et animations vectorielles incluant SVG et Lottie. Elle peut être librement utilisée sur diverses plateformes logicielles et applications pour visualiser des contenus graphiques. (
Source
)
Une bibliothèque graphique C++ basée sur
gnuplot
pour la visualisation de données.
Matplot++
peut tirer parti des bibliothèques suivantes : OpenCV, OpenGL, LAPACK, BLAS, FFTW, JPEG, TIFF, ZLIB, PNG, GLAD, GLFW3. (
Doc
)
Le paquet GNU
plotutils
contient
libplot
, une bibliothèque C/C++ pour exporter des graphiques vectoriels 2D dans de nombreux formats de fichiers, vectoriels et bitmap.
libplot
peut animer des graphiques vectoriels 2D et utilise une API de type Postscript pour l'exportation de fichiers et les animations graphiques.
ITK est une bibliothèque open-source multiplateforme fournissant aux développeurs une suite complète d'outils logiciels pour l'analyse d'images. Développée selon des méthodologies de programmation extrême, ITK s'appuie sur une architecture éprouvée et spatialement orientée pour le traitement, la segmentation et l'enregistrement d'images scientifiques en deux, trois dimensions ou plus.
I
nternational
C
omponents for
U
nicode est un ensemble mature et largement utilisé de bibliothèques C/C++ fournissant la prise en charge d'Unicode et de la mondialisation pour les applications logicielles. (
Src
)
Bibliothèque de traces de pile simple, portable et autonome pour C++11 et versions ultérieures. Inclut des traces de pile sûres pour les signaux, des traces de pile sur exceptions, des extraits de code source, etc.
API de journalisation multiplateforme C++17 (modélisée d'après l'API Java log4j) offrant un contrôle thread-safe, flexible et arbitrairement granulaire sur la gestion et la configuration des journaux.
Une bibliothèque de gestion d'erreurs légère pour C++11 : format single-header, aucune dépendance, pas d'allocations mémoire dynamiques, peut être utilisée avec ou sans gestion d'exceptions, prête pour le multithreading. (
Src
)
ALGLIB est une bibliothèque multiplateforme (Windows/POSIX/Linux) d'analyse numérique et de traitement de données. Les fonctionnalités d'ALGLIB incluent : Analyse de données, Optimisation et solveurs non linéaires, Interpolation, Algèbre linéaire et solveurs linéaires, FFT et bien d'autres.
Une bibliothèque HPC (CPU/GPU/OpenCL/CUDA/GPGPU) multiplateforme (Windows/OSX/Linux) à usage général pour le calcul parallèle. Les domaines d'ArrayFire sont : Algorithmes vectoriels, Traitement d'image, Vision par ordinateur, Traitement du signal, Algèbre linéaire, Statistiques, et plus. (
Src
)
Inclut plusieurs contributions dans le domaine des mathématiques : Utilitaires de nombres à virgule flottante, Constantes mathématiques, Distributions et fonctions statistiques, Statistiques, Fonctionnelles vectorielles - Normes, Fonctions spéciales, Algorithmes de recherche de racines et de minimisation, Polynômes et fonctions rationnelles, Interpolation, Quadrature et différenciation, Filtres, Fonctions de nombres complexes, Quaternions, Octonions, Utilitaires entiers (Plus grand commun diviseur et Plus petit commun multiple), Séries, Rationnels et fractions continues.
Fournit une variété de générateurs et de distributions pour produire des nombres aléatoires ayant des propriétés utiles, telles que la distribution uniforme.
Une interface de classe C++ pratique qui offre des fonctions et opérateurs surchargés. Le
GMP
est une bibliothèque C libre pour l'arithmétique en précision arbitraire, opérant sur des entiers signés, des nombres rationnels et à virgule flottante.
Une bibliothèque C multiplateforme (avec wrappers C++) pour l'arithmétique décimale en virgule flottante en précision arbitraire correctement arrondie.
Une bibliothèque pour faire de la théorie des nombres. NTL est une bibliothèque C++ portable et haute performance fournissant des structures de données et des algorithmes pour manipuler des entiers signés de longueur arbitraire, et pour les vecteurs, matrices et polynômes sur les entiers et sur les corps finis.
PCG est une famille d'algorithmes simples, rapides, efficaces en espace et statistiquement bons pour la génération de nombres aléatoires. Contrairement à de nombreux GNA à usage général, ils sont également difficiles à prédire.
Logiciel statistique avancé et complet : collecte et prétraitement des données, statistiques, apprentissage automatique et optimisation, avec code source C++ ouvert.
La bibliothèque Multiprecision fournit des types entiers, rationnels, à virgule flottante et complexes en C++ qui possèdent une
plage et une précision
supérieures aux types fondamentaux (intégrés) ordinaires du C++.
Une bibliothèque C++11 de
m
athématiques en
p
ointe
f
ixe qui fournit les fonctionnalités à virgule flottante de la bibliothèque standard sur des entiers. Utile si votre plateforme cible ne dispose pas d'unité de calcul en virgule flottante, ou si des calculs déterministes sont requis.
Une bibliothèque template C++17/20 fournissant des remplacements plug-in pour les types arithmétiques natifs (entier/décimal/point fixe/virgule flottante/posits/logarithmique/intervalle)
Boost.Geometry (également appelée
G
eneric
G
eometry
L
ibrary, GGL), définit des concepts, des primitives et des algorithmes pour résoudre des problèmes de géométrie. Boost.Geometry contient un noyau agnostique en dimension, agnostique au système de coordonnées et évolutif, basé sur des concepts, des méta-fonctions et du tag dispatching. Les algorithmes pris en charge sont : calcul d'aire, de longueur, de périmètre, de centroïde, d'enveloppe convexe, d'intersection (clipping), de test d'inclusion (point dans polygone), de distance, d'enveloppe (boîte englobante), de simplification, de transformation, et bien plus encore. La bibliothèque prend en charge les nombres arithmétiques de haute précision
L
ibrary for
E
fficient
M
odeling and
O
ptimization in
N
etworks implémente des structures de données et algorithmes courants axés sur l'optimisation combinatoire, les graphes et réseaux. (
Doc
)
O
pen
G
raph algorithms and
D
ata structures
F
ramework - est une bibliothèque C++ pour les algorithmes de graphes, en particulier pour le dessin automatique de graphes.
Une bibliothèque de modèles C++ pour l'algèbre linéaire et le calcul scientifique proposant des wrappers pour OpenBLAS, Intel MKL, LAPACK, ATLAS, ARPACK, SuperLU et FFTW. Utile pour le ML, la reconnaissance de formes, le DSP, la bioinformatique, les statistiques, la finance, etc.
Une bibliothèque de classes modèles C++ fournissant des tableaux et vecteurs denses hautes performances, des générateurs de nombres aléatoires et des petits vecteurs.
Une bibliothèque de classes modèles C++ fournissant les fonctionnalités BLAS niveaux 1, 2, 3 pour les matrices denses, compactées et creuses. Utilise des templates d'expressions.
Une suite de structures de données et routines pour la résolution parallèle d'applications scientifiques modélisées par des équations aux dérivées partielles. Prend en charge MPI, et les GPU via CUDA ou OpenCL, ainsi que les hybrides MPI-GPU.
Sp
ectrale
E
igenvalue
C
omputation
T
oolkit as a
R
edesigned
A
RPACK est une bibliothèque C++ open-source pour les problèmes de valeurs propres à grande échelle, construite sur la bibliothèque d'algèbre linéaire
Eigen
(également open-source et header-only). (
Src
)
Une bibliothèque de calcul numérique en précision arbitraire développée par Bellard avec un exemple de programme qui calcule
π
jusqu'à des milliards de bits
Une bibliothèque C++ open source pour modéliser et résoudre des problèmes d'optimisation complexes et de grande taille. C'est une bibliothèque riche en fonctionnalités, mature et performante qui est utilisée en production chez Google depuis 2010.
Un framework symbolique pour l'optimisation non linéaire et la différenciation algorithmique. Prend en charge la génération de code C++ pour les expressions symboliques et la connexion dynamique du code généré compilé.
La bibliothèque ExprTk est un analyseur et moteur d'évaluation d'expressions mathématiques à l'exécution, simple à utiliser, facile à intégrer et extrêmement efficace. ExprTk prend en charge de nombreuses formes de sémantiques de traitement fonctionnel, logique et vectoriel et est très facilement extensible.
Une bibliothèque pour créer des systèmes intégrés qui intègrent des manipulations symboliques avec des domaines plus établis de l'informatique (comme les applications numériques intensives en calcul, les interfaces graphiques, etc.) sous un même toit.
Un wrapper de compilateur qui intègre l'exécution symbolique dans le programme pendant la compilation, et une bibliothèque de support d'exécution associée. Essentiellement, le compilateur insère du code qui calcule des expressions symboliques pour chaque valeur dans le programme. Le calcul réel se fait par des appels à la bibliothèque de support à l'exécution.
Une bibliothèque mathématique symbolique qui permet une instanciation, manipulation et évaluation pratiques d'expressions mathématiques à l'exécution et à la compilation.
Une bibliothèque de réflexion miniature, fournissant des visiteurs de structures pour C++11/14. Autonome, 200 à 400 lignes de code selon comment on compte.
Un moteur de sérialisation moderne, universel et facile à utiliser développé en C++17, basé sur la réflexion à la compilation. Formats supportés : JSON, XML, personnalisés.
Protocol Buffers (alias protobuf) est le mécanisme neutre en langage, neutre en plateforme et extensible de Google pour sérialiser des données structurées, incluant un compilateur de fichiers .proto. (
Doc
)
Un modèle de fonction qui permet à
std::sort
(et autres fonctions de tri à accès aléatoire) d'être utilisées avec des conteneurs à accès non-aléatoire. Il améliore également les performances du tri des grands objets dans les conteneurs à accès aléatoire et les tableaux.
Une bibliothèque de conversion d'encodage de jeux de caractères pour Linux et Mac. L'implémentation Windows de
iconv
est basée sur l'API de conversion de jeux de caractères Win32.
Une bibliothèque de formatage open-source fournissant une alternative rapide et sûre aux stdio C et aux
iostream
C++. Prototype pour la famille
std::format
C++20.
Un ensemble de bibliothèques C++17 pour l'analyse syntaxique et la génération de sortie implémentées comme
D
omain
S
pecific
E
mbedded
L
anguages (DSEL) utilisant les Expression templates et la Template Meta-Programming. Les bibliothèques Spirit permettent d'écrire une grammaire cible exclusivement en C++. (
Src
) (
Doc
)
Expressions régulières rapides à
C
ompile-
T
ime avec prise en charge de la correspondance/recherche/capture pendant le temps de compilation ou l'exécution.
Une bibliothèque de combinateurs d'analyse syntaxique C++17 qui vous permet d'écrire un analyseur en le spécifiant dans un DSL C++ pratique avec toute la flexibilité et le contrôle d'un analyseur écrit à la main. Prend en charge UTF-8/16/32. (
Doc
)
P
arsing
E
xpression
G
rammar
T
emplate
L
ibrary est une bibliothèque de combinateurs d'analyse syntaxique C++17 header-only sans dépendance pour créer des analyseurs selon une
Parsing Expression Grammar
(PEG).
Une bibliothèque C++ pour construire des serveurs web RESTful hautes performances. Construite sur
libmicrohttpd
pour fournir une API simple permettant aux développeurs de créer des services HTTP en C++.
Widgets et blocs de construction pour applications web, sécurité intégrée, rendu PDF, peinture 2D et 3D, ORM, création de graphiques, frameworks d'authentification. (
Doc
) (
Src
)