L'histoire du langage de programmation C++ remonte à 1979 , lorsque Bjarne Stroustrup entreprit certains développements pour sa thèse de doctorat. Parmi tous les langages que Stroustrup peut utiliser, il en existe un appelé Simula, qui, comme son nom l'indique, pourrait être un langage conçu principalement pour la simulation. Le langage Simula 67 est une variante utilisée par Stroustrup et est considéré comme le principal langage prenant en charge le paradigme de programmation orientée objet. Stroustrup trouve ce paradigme utile dans le développement d'emballages. Cependant, le langage Simula est trop lent pour une utilisation pratique et pratique. Peu de temps après, Bjarne Stroustrup souhaitait améliorer le langage C en prenant en charge le paradigme orienté objet. Il s'est penché sur l'implémentation OO de Smalltalk pour obtenir des idées d'implémentation. Mais il n'était pas disposé à renoncer aux performances pour cela, alors il a commencé à travailler sur "C with Classes (C with classes)", en espérant que le code C++ devrait avoir des performances similaires (ou meilleures) à celles du code C lors de son exécution.
En 1983 , le nom du langage est passé de « C avec classes » à C++. L'opérateur ++ en C est l'opérateur utilisé pour incrémenter une variable, ce qui vous donne un aperçu de la façon dont Stroustrup perçoit le langage. De nombreuses nouvelles fonctionnalités ont été ajoutées au cours de cette période, dont les plus notables sont les fonctions virtuelles, la surcharge de fonctions, les références avec une esperluette, le mot-clé const et les commentaires sur une seule ligne utilisant deux barres obliques.
En 1985 , Stroustrup a publié un livre intitulé « Le langage de programmation C++ ». La même année, le C++ a été implémenté en tant que produit commercial. Le langage n’a pas été formellement standardisé, ce qui fait de ce livre une référence très importante. Le langage a été à nouveau mis à jour en 1989 pour inclure les membres protégés et statiques, ainsi que l'héritage de plusieurs classes.
En 1990 , le manuel de référence annoté C++ a été publié. La même année, le compilateur Turbo C++ de Borland serait lancé en tant que produit commercial. Turbo C++ ajoute de nombreuses autres bibliothèques qui peuvent avoir un impact considérable sur le développement C++. Bien que la dernière version stable de Turbo C++ date de 2006, le compilateur est encore largement utilisé.
En 1998 , le Comité des normes C++ a publié la première norme internationale C++ ISO/IEC 14882:1998, officieusement connue sous le nom de C++98. On dit que le « Annotated C++ Reference Manual » a eu une grande influence sur la formulation de la norme. La bibliothèque de modèles standard est également incluse, dont le développement du concept a commencé en 1979. En 2003, le comité a répondu à plusieurs problèmes signalés dans les normes de 1998 et les a révisées en conséquence. Le langage modifié s'appelle C++03.
En 2005 , le Comité des normes C++ a publié un rapport technique (appelé TR1) détaillant diverses fonctionnalités qu'il prévoyait d'ajouter à la dernière norme C++. La nouvelle norme est officieusement connue sous le nom de C++0x car elle devrait être publiée avant la fin de la première décennie. Ironiquement, la nouvelle norme ne sera publiée qu'à la mi-2011. Jusque-là, plusieurs rapports techniques avaient été publiés et certains compilateurs avaient commencé à ajouter un support expérimental pour de nouvelles fonctionnalités.
Mi-2011 , le nouveau standard C++ (appelé C++11) a été finalisé. Le projet de bibliothèque Boost a eu un impact significatif sur le nouveau standard, certains des nouveaux modules provenant directement des bibliothèques Boost correspondantes. Certaines des nouvelles fonctionnalités incluent la prise en charge des expressions régulières, une bibliothèque de randomisation complète, une nouvelle bibliothèque de synchronisation C++, la prise en charge atomique, une bibliothèque de threads standard, une nouvelle syntaxe de boucle for qui fournit des fonctionnalités similaires aux boucles foreach dans certains autres langages, un mot clé auto, un nouveau classes de conteneurs, meilleure prise en charge des listes d'initialisation d'union et de tableau et des modèles variadiques.
En 2014 , C++ 14 (également connu sous le nom de C++ 1y) a été publié en tant que petite extension de C++11. Les principales fonctions sont des corrections de bugs et de petites améliorations. Le projet de procédure de vote de la norme internationale a été achevé à la mi-août 2014 pour renforcer la version. fonction lambda. constexpr et fonctionnalités d'inférence de type.
En 2017 , la norme C17 a été publiée. C17 offre beaucoup de choses. Améliorations du langage principal et des bibliothèques.
En 2020 , la norme C++20 a été publiée, lançant de nombreuses fonctionnalités lourdes, dont les plus importantes sont :
Concepts : les concepts changent notre façon de penser et de programmer les modèles. Ce sont des catégories sémantiques de paramètres de modèle. Ils vous permettent d'exprimer vos intentions directement dans le système de types. Si quelque chose ne va pas, vous recevrez des messages d'erreur clairs.
Bibliothèque Ranges : La nouvelle bibliothèque ranges permet d'exécuter des algorithmes directement sur des conteneurs, de les composer avec une notation pipe et de les appliquer à des flux de données infinis.
Coroutines : la programmation asynchrone en C++ se généralise grâce aux coroutines. Les coroutines constituent la base des tâches collaboratives, des boucles d'événements, des flux de données infinis ou des pipelines.
Modules : les modules surmontent les limitations des fichiers d'en-tête. La séparation des fichiers d'en-tête et des fichiers sources est devenue aussi obsolète que les préprocesseurs. Enfin, nous disposons de temps de construction plus rapides et d’un moyen plus simple de créer des packages.
Concurrence : pointeurs intelligents atomiques, threads de jonction et annulables, bibliothèque de synchronisation C20, qui améliore les capacités de programmation simultanée C++ ;
Tutoriel C++
Introduction au C++
Paramètres de l'environnement C++
Syntaxe de base C++
Commentaires C++
Types de données C++
Types de variables C++
Portée des variables C++
Constantes C++
Types de modificateurs C++
Classe de stockage C++
Opérateurs C++
Boucle C++
Jugement C++
Fonction C++
Numéros C++
Tableau C++
Chaîne C++
Pointeurs C++
Références C++
Date et heure C++
Entrée et sortie de base C++
Structures de données C++
Classes et objets C++
Héritage C++
Opérateurs C++ surchargés et fonctions surchargées
Polymorphisme C++
Abstraction des données C++
Encapsulation de données C++
Interface C++ (classe abstraite)
Fichiers et flux C++
Gestion des exceptions C++
Mémoire dynamique C++
Espace de noms C++
Modèle C++
Préprocesseur C++
Traitement du signal C++
Multithread C++
Programmation Web C++
Tutoriel C++ STL
Bibliothèque standard C++
1. Connaissances de base
8.1 Concepts de base des structures
8.2 Définition et utilisation de la structure
8.3 Tableau de structure
8.4 Pointeur de structure
8.5 Structure Structure imbriquée
8.6 Structure comme paramètre de fonction
8.7 Scénarios d'utilisation de Const dans les structures
7.1 Concepts de base des pointeurs
7.2 Définition et utilisation des variables de pointeur
7.3 Espace mémoire occupé par les pointeurs
7.4 Pointeurs nuls et pointeurs sauvages
7.5 pointeur modifié const
7.6 Pointeurs et tableaux
7.7 Pointeurs et fonctions
7.8 Pointeurs, tableaux, fonctions
1. instruction goto (non recommandée)
2. Tableau unidimensionnel
3. Tableau bidimensionnel
4. Transfert de valeur dans les fonctions
5. Déclaration de fonction
6. Écriture de fonctions dans des fichiers séparés
7. Pointeur
8. Structure
2. Programmation de base
3.1 Paramètres par défaut de la fonction
3.2 Paramètres du lieu de fonction
3.3 Surcharge de fonctions
2.1 Utilisation de base des références
2.2 Notes sur la citation
2.3 Référence comme paramètre de fonction
2.4 Référence comme valeur de retour de la fonction
2.5 La nature des citations
2.6 Référence constante
1.1 Avant d'exécuter le programme
1.2 Après avoir exécuté le programme
1.3 nouvel opérateur
1. Modèle de partition mémoire
2. Citation
3. Fonction
"Compréhension approfondie de C++11 : Analyse et application des nouvelles fonctionnalités de C++11"
"Classique d'introduction au C++ (10e édition)"
"Version chinoise C++ Primer Plus 6e édition (produite par Asynchronous Books)"
"Série de traduction de livres informatiques Tsinghua : Maîtriser le C++ (9e édition)"
"Programmation avancée en C++ (4e édition)"
"Introduction à la programmation de jeux C++ (4e édition) (produit par Asynchronous Books)"
"Analyse du code source STL"
"Programmation C++ : principes et pratiques (bases) (livre original 2e édition)"
"Version chinoise C++ accélérée"
"Réflexions sur la programmation C++ (deux volumes)"
"Version chinoise d'Effective STL : 50 expériences d'utilisation efficace de STL"
"Anatomie de la programmation C++ : problèmes, solutions et directives de conception"
"Modèles C++ version chinoise"
"Nouvelle réflexion dans la conception C++"
"Métaprogrammation de modèles C++"
"Pratique de programmation simultanée C++"
"Langage de programmation C++ (partie 1-3) (livre original 4e édition)"
"Bibliothèque standard C++ (2e édition)"
"C++ essentiel"
"La conception et l'évolution du langage C++"
"Exploration approfondie du modèle objet C++"
"Programmation Générique et STL"
10 fonctionnalités C++ 11 que tout développeur C++ devrait utiliser
15 fonctionnalités C++ 11 que vous devez réellement utiliser dans vos projets C++
Comment utiliser les expressions Lambda en C++11
Compréhension approfondie de C++11
Tri des vomissements de sang : nouvelles fonctionnalités de C++11
Nouvelles fonctionnalités C++ 11 points de connaissance auto et decltype
Nouvelles fonctionnalités C++ 11 : référence lvalue, référence rvalue, sémantique de déplacement, transfert parfait
Initialisation de la liste des nouvelles fonctionnalités C++11
Nouvelles fonctionnalités C++ 11 std::function et expressions lambda
Nouvelles fonctionnalités C++ 11 : améliorations des modèles
Nouvelles fonctionnalités C++ 11 et points de connaissances liés aux threads
Nouvelles fonctionnalités C++ 11 opérations asynchrones-async
Nouvelles fonctionnalités C++ 11 : pointeurs intelligents
Nouvelles fonctionnalités communes de C++11 (1)
Nouvelles fonctionnalités communes de C++11 (2)
Une brève discussion sur les nouvelles fonctionnalités de C++14
Tous les points de connaissances sur les nouvelles fonctionnalités de C++14 sont ici
Résumé : Nouvelles fonctionnalités de C++17
Fonctionnalités du langage C++20
P1 Introduction à la programmation C++
Fichier d'en-tête P2 et déclaration de classe
Constructeur P3
Transfert des paramètres P4 et valeur de retour
Surcharge de l'opérateur P5 et objets temporaires
P6 Revoir le processus de mise en œuvre de la classe Complexe
P7 trois fonctions principales : construction de copie, réplication de copie et destruction
Gestion du tas, de la pile et de la mémoire P8
P9 Examiner le processus de mise en œuvre de la classe String
Extensions P10 : modèles de classe, modèles de fonctions et autres
P11 Composition et succession
P13 Conceptions liées à la commande
P14 1 Introduction
Fonction de conversion P15 2
P16 3 constructeur non explicite à un argument
P17 4 classes de type pointeur
P18 5 fonctionnent comme des classes
Discussion sur l'expérience de l'espace de noms P19 6
Modèle de classe P20 7
P21 8 Modèle de fonction
P22 9 Modèle de membre
Spécialisation P23 10
P24 11 Modèle de spécialisation partielle
Paramètres du modèle de modèle P25 12
P26 13 A propos de la bibliothèque standard C++
P27 14 Trois thèmes
P28 15 Référence
P29 16 Construction et destruction sous relation composite & successorale
P30 17 À propos de vptr et vtbl
P31 18 À propos de ça
P32 19 0 À propos de la liaison dynamique
P33 19 1 À propos de la liaison dynamique
P34 20 À propos de Nouveau, Supprimer
P35 21 Nouvel opérateur, opérateur supprimé
P36 22 Exemple
P37 23 Exemple de surcharge de new, delete$
P38 24 Basic String utilise newextra pour augmenter le volume de l'application
Bibliothèque standard C++ - une collection de classes et de fonctions écrites dans le langage de base et faisant partie de la norme ISO C++ elle-même
Bibliothèque de modèles standard - Bibliothèque de modèles standard
Bibliothèque C POSIX - Spécification de la bibliothèque standard C pour les systèmes POSIX
Comité des normes ISO C++ - Comité des normes C++
FAQ C++ - Foire aux questions C++
Free Country - Free Country fournit du code source C++ gratuit et des bibliothèques C++ qui couvrent les domaines de programmation C++ tels que la compression, l'archivage, la programmation de jeux, les bibliothèques de modèles standard et la programmation GUI.
Groupe d'utilisateurs C et C++ - Le groupe d'utilisateurs C et C++ fournit du code source gratuit pour les projets C++ couvrant divers domaines de programmation, notamment l'IA, l'animation, les compilateurs, les bases de données, le débogage, le cryptage, les jeux, les graphiques, l'interface graphique, les outils linguistiques, la programmation système, etc. .
LearnCpp - Apprenez la programmation C++ gratuitement
CodeCogs - CodeCogs est une bibliothèque collaborative open source de composants numériques pour C/C++
codeproject - Projet de code de ressource C/C++ fourni par codeproject
thinkco - code source C++ lié au jeu
Bibliothèques C/C++ gratuites – Code source C++ gratuit et autres outils utiles
La bibliothèque standard C++ - Il s'agit d'une page Web qui collecte une liste de liens vers plusieurs sites Web C/C++.
cplusplus - Site d'apprentissage du C++
Codes sources C++ – Il s’agit d’une liste complète de 345 codes sources pour C++
Bibliothèque standard Apache C++ : est une collection d'algorithmes, de conteneurs, d'itérateurs et d'autres composants de base
ASL : Adobe Source Code Library fournit une bibliothèque de codes sources C++ portable et évaluée par des pairs.
Boost : une vaste collection de bibliothèques C++ à usage général.
BDE : Environnement de développement de Bloomberg Intelligence Labs.
Cinder : une communauté de développement open source qui fournit un codage créatif de qualité professionnelle.
Bxxomfort : une bibliothèque légère, uniquement en en-tête, qui porte certaines des nouvelles fonctionnalités de C++11 vers C++03.
Dlib : une bibliothèque C++ multiplateforme universelle conçue à l'aide de la programmation contractuelle et de la technologie C++ moderne.
EASTL : partie publique EA-STL
ffead-cpp : cadre de développement d'applications d'entreprise
Folly : Une bibliothèque C++ open source développée et utilisée par Facebook.
JUCE : une bibliothèque C++ complète pour développer des logiciels multiplateformes
libphenom : un framework d'événements pour créer des systèmes hautes performances et hautement évolutifs.
LibSourcey : E/S événementielles C++ 11 pour le streaming vidéo en temps réel et les applications réseau hautes performances
Loki : la conception d'une bibliothèque C++, y compris la mise en œuvre de modèles de conception et d'idiomes communs.
MiLi : une petite bibliothèque C++ uniquement en-tête
openFrameworks : développer une boîte à outils C++ pour le codage créatif.
Qt : cadre d'application et d'interface utilisateur multiplateforme
Raison : Un framework multiplateforme qui permet aux développeurs d'utiliser plus facilement Java, .Net et Python, tout en répondant également à leurs besoins en termes de performances et d'avantages du C++.
ROOT : Un ensemble de frameworks orientés objet avec toutes les fonctionnalités nécessaires pour traiter et analyser de grandes quantités de données de manière très efficace, utilisé par le CERN.
STLport : est une version représentative de STL
STXXL : bibliothèque de modèles standard pour des ensembles de données volumineux supplémentaires.
Ultimate++ : cadre de développement rapide d'applications multiplateformes C++
Bibliothèque de modèles Windows : bibliothèque C++ pour développer des applications Windows et des composants d'interface utilisateur
Yomm11 : ouvrez plusieurs méthodes pour C++11.
Boost.Asio : bibliothèque C++ multiplateforme pour la programmation réseau et d'E/S de bas niveau.
libev : boucle temporelle complète et hautes performances, légèrement calquée sur libevent, mais n'a plus les mêmes limitations que libevent, et certains de ses bugs ont été corrigés.
libevent : bibliothèque de notifications d'événements
libuv : E/S asynchrones multiplateformes.
libco : coroutine, la bibliothèque IO sous-jacente de WeChat qui prend en charge 800 millions d'utilisateurs en ligne en même temps. Puissant
libgo : framework de concurrence de style Golang, bibliothèque de coroutines d'implémentation C++11
ACE : boîte à outils de mise en réseau orientée objet C++
Casablanca : SDK REST C++
cpp-netlib : une collection de bibliothèques open source pour la programmation réseau avancée
libCurl : bibliothèque de transfert de fichiers multiprotocole
Mongoose : serveur Web très léger
Muduo : bibliothèque réseau C++ non bloquante pour serveurs multithread Linux
net_skeleton : bibliothèque client/serveur TCP pour C/C++
POCO : bibliothèque de classes C++ pour la création d'applications réseau et Internet pouvant s'exécuter sur des systèmes de bureau, de serveur, mobiles et embarqués.
RakNet : un moteur réseau C++ multiplateforme et open source pour les développeurs de jeux.
Tufao : un framework Web asynchrone construit en C++ sur Qt.
WebSocket++ : bibliothèque client/serveur websocket basée sur C++/Boost Aiso
ZeroMQ : bibliothèque de communication asynchrone modulaire et à haut débit
f-stack : la pile de protocoles open source de Tencent, une pile de protocoles en mode utilisateur hautes performances basée sur DPDK.
NtyTcp : pile de protocoles monothread, basée sur l'implémentation netmap, DPDK et rawSocket.
LWIP : une version simplifiée de l'implémentation de la pile de protocoles TCP/IP pour la plateforme RAM.
mTCP : pile de protocoles TCP/IP dans l'espace utilisateur hautement évolutive pour les systèmes multicœurs.
4.4BSD : * La pile de protocoles nix est dérivée de 4.4BSD.
Nginx : Un serveur Web HTTP et proxy inverse hautes performances qui fournit également des services IMAP/POP3/SMTP.
Lighttpd : un logiciel de serveur Web open source sécurisé, rapide, conforme aux normes de l'industrie, hautement adaptable et optimisé pour les environnements à configuration élevée.
Libmicrohttpd : Un simple serveur Web de bibliothèque C sous le logiciel GNU. L'API est simple et rapide.
shttpd : framework de serveur Web basé sur Mongoose.
CivetWeb : fournit un serveur Web intégré C/C++, facile à utiliser et puissant, avec prise en charge facultative de CGI, SSL et Lua.
CppCMS : Framework de développement web gratuit et performant (pas un CMS).
Crow : Un framework micro web C++ (inspiré de Python Flask)
Kore : serveur/framework web ultra-rapide et flexible pour les applications web développées en C.
libOnion : Une bibliothèque légère qui vous aide à créer des serveurs Web à l'aide du langage de programmation C.
QDjango : Un framework web écrit en C++ et basé sur la bibliothèque Qt, essayant d'émuler l'API Django, d'où son nom.
Wt : bibliothèque C++ pour développer des applications web.
Bibliothèque standard C++ : il s'agit d'un ensemble de classes et de fonctions écrites dans le langage principal et qui fait partie de la norme ISO C++ elle-même.
Bibliothèque de modèles standard : Bibliothèque de modèles standard, STL
Comité des normes ISO C++ : Comité des normes C++
FMOD : moteur audio multiplateforme facile à utiliser et outil de création de jeux de contenu audio.
Maximilian : bibliothèque de traitement du signal numérique audio et musical C++
OpenAL : bibliothèque audio open source – API audio multiplateforme
Opus : un codec audio totalement ouvert, libre de droits et très polyvalent
Speex : codec gratuit, obsolète par Opus
Tonic : synthèse audio simple à utiliser et efficace en C++
Vorbis : Ogg Vorbis est un format audio compressé universel entièrement ouvert, non propriétaire et libre de droits.
lisequence : Une bibliothèque C++ pour représenter et analyser les données de génétique des populations.
SeqAn : se concentre sur les algorithmes et les structures de données pour l'analyse séquentielle des données biologiques.
Vcflib : bibliothèque C++ pour l'analyse et le traitement des fichiers VCF
Wham : appliquez les tests d'association directement aux variantes structurelles génétiques dans les fichiers BAM.
bzip2 : Une compression de données entièrement gratuite, sans brevet et de haute qualité
doboz : bibliothèque de compression pour une décompression rapide
PhysicsFS : Une bibliothèque qui fournit un accès abstrait à diverses archives, principalement utilisée dans les jeux vidéo. La conception a été en partie inspirée du sous-système de fichiers de Quake3.
KArchive : une bibliothèque pour créer, lire, écrire et manipuler des archives de fichiers (telles que zip et tar), qui fournit une compression et une décompression transparentes des données à l'aide du format gzip via une série de sous-classes de QIODevice.
LZ4 : Algorithme de compression très rapide
LZHAM : Base de données de compression sans perte, le taux de compression est proche de LZMA, mais la vitesse de décompression est beaucoup plus rapide.
LZMA : méthode de compression par défaut et courante pour le format 7z.
LZMAT : et sa bibliothèque rapide de compression de données sans perte en temps réel
Minizip : le dernier correctif de bug de Zlib, prend en charge la répartition du disque PKWARE, le cryptage AES et la mise en mémoire tampon des E/S.
Snappy : compression et décompression rapides
ZLib : bibliothèque de compression de flux de données très compacte
ZZIPlib : fournit un accès en lecture aux archives ZIP.
Boost.Compute : bibliothèque de calcul GPU C++ pour OpenCL
Bolt : une bibliothèque de modèles C++ optimisée pour les GPU
C++React : bibliothèque de programmation réactive pour C++11
Intel TBB : blocs de construction Intel Threading
Libclsph : bibliothèque de simulation de fluides SPH accélérée par GPU basée sur OpenCL
OpenCL : Un standard ouvert pour la programmation parallèle de systèmes hétérogènes
OpenMP : API OpenMP
Thrust : une bibliothèque d'algorithmes parallèles similaire à la bibliothèque de modèles standard C++
HPX : un système d'exécution C++ universel pour les applications parallèles et distribuées de toute taille
VexCL : bibliothèque de modèles d'expressions vectorielles C++ pour OpenCL/CUDA.
Bcrypt : un outil de cryptage de fichiers multiplateforme qui rend les fichiers cryptés portables sur tous les systèmes d'exploitation et processeurs pris en charge.
BeeCrypt : Une bibliothèque graphique de cryptage rapide avec des fonctions puissantes et une interface pratique.
Botan : bibliothèque de chiffrement C++
Crypto++ : Une bibliothèque C++ gratuite pour les schémas de chiffrement
GnuPG : Une implémentation complète du standard OpenPGP
GnuTLS : Une bibliothèque de communication sécurisée qui implémente les protocoles SSL, TLS et DTLS
Libgcrypt : bibliothèque graphique de chiffrement basée sur GnuPG.
Libmcrypt : Thread-safe, fournissant une API unifiée.
LibreSSL : protocole SSL/TLS gratuit, un fork d'OpenSSL 2014
LibTomCrypt : Un outil de chiffrement très complet, modulaire et portable
libsodium : bibliothèque de chiffrement basée sur NaCI, opiniâtre et facile à utiliser
Nettle : la bibliothèque de chiffrement sous-jacente
OpenSSL : une bibliothèque de chiffrement open source puissante, commerciale et complète.
hiberlite : mappage objet-relationnel C++ pour SQLite3
LevelDB : magasin clé-valeur rapide
LMDB : un magasin clé-valeur intégré conforme aux quatre éléments de base d'une base de données
MySQL++ : Un wrapper C++ qui encapsule l'API C de MySql
RocksDB : stockage rapide des valeurs-clés intégrées de Facebook
SQLite : Une base de données relationnelle entièrement intégrée et complète qui ne fait que quelques centaines de Ko et peut être incluse correctement dans votre projet.
MongoDB : une base de données basée sur le stockage de fichiers distribué
Boost.Test : bibliothèque de tests Boost
Catch : un framework natif C++ très élégant qui contient uniquement des fichiers d'en-tête pour les tests unitaires, le développement piloté par les tests et le développement piloté par le comportement.
CppUnit : framework de test C++ porté depuis JUnit
GoogleTest : cadre de test Google C++
ig-debugheap : tas de débogage multiplateforme pour le suivi des erreurs de mémoire
MemTrack : pour suivre les allocations de mémoire en C++
MicroProfile : profileur de tentatives de réseau multiplateforme
UnitTest++ : framework de tests unitaires C++ léger
C++ B-Tree : une bibliothèque de modèles qui implémente des conteneurs de mémoire de commandes basés sur la structure de données B-tree
Hashmaps : implémentation d'un algorithme de table de hachage d'adressage ouvert en C++
Cocos2d-x : Un framework multiplateforme pour créer des jeux 2D, des livres interactifs, des présentations et d'autres applications graphiques.
Grit : un projet communautaire visant à créer un moteur de jeu gratuit pour les jeux 3D en monde ouvert.
lrrlicht : un moteur #D temps réel open source hautes performances écrit en langage C++
PolyCode : Un framework open source pour créer des jeux implémentés en C++ (fourni avec Lua).
bgfx : bibliothèque de rendu multiplateforme
Le Caire : bibliothèque graphique 2D prenant en charge plusieurs périphériques de sortie
Horde3D : Un petit moteur de rendu et d'animation 3D
magnum : moteur graphique C++11 et OpenGL 2D/3D
Ogre 3D : un moteur de rendu 3D flexible, orienté scène, en temps réel, écrit en C++ (pas un moteur de jeu)
OpenSceneGraph : boîte à outils graphiques 3D open source hautes performances
Panda3D : Framework de rendu 3D et de développement de jeux, écrit en Python et C++.
Skia : une bibliothèque graphique 2D complète pour dessiner du texte, des graphiques et des images
urho3d : moteur de rendu et de jeu multiplateforme.
Boost.GIL : bibliothèque d'images générale
CImg : une petite boîte à outils C++ open source pour le traitement d'images
FreeImage : une bibliothèque open source qui prend en charge les formats d'image courants et d'autres formats requis par les applications multimédias d'aujourd'hui.
GDCM : bibliothèque DICOM de base
ITK : système d'analyse d'images open source multiplateforme
Magick++ : interface C++ pour le programme ImageMagick
OpenCV : bibliothèque de vision par ordinateur open source
tesseract-ocr : moteur OCR
VIGRA : bibliothèque de vision par ordinateur C++ à usage général pour l'analyse d'images
VTK : système logiciel libre et open source pour l'infographie 3D, le traitement et la visualisation d'images.
gettext : GNU gettext
IBM ICU : bibliothèques C, C++ et Java fournissant la prise en charge d'Unicode et de la mondialisation
libiconv : bibliothèque de conversion d'encodage entre différents encodages de caractères
congelé : générateur d'analyse Jason pour C/C++
Jansson : bibliothèque de langage C pour l'encodage, le décodage et le traitement des données de Jason
jbson : une bibliothèque pour créer et itérer des données BSON et des documents Json en C++14
JeayeSON : Une bibliothèque JSON C++ très robuste qui ne contient que des fichiers d'en-tête
JSON++ : analyseur C++ JSON
json-parser : analyseur JSON écrit en ANSI C portable avec une très faible empreinte mémoire
json11 : Une mini bibliothèque JSON C++11
jute : analyseur C++ JSON très simple
ibjson : bibliothèque d'analyse et d'impression JSON en C, facilement intégrable à n'importe quel modèle
libjson : bibliothèque JSON légère
PicoJSON : analyse et sérialisation JSON en C++, incluant uniquement les fichiers d'en-tête
Qt-Json : une classe simple pour analyser entre les données JSON et les hiérarchies QVariant
QJson : bibliothèque basée sur Qt pour mapper les données JSON aux objets QVariant
RepidJSON : un générateur d'analyse JSON rapide pour C++, comprenant des API de style SAX et DOM
Boost.Log : conçu pour être très modulaire et extensible
easyloggingpp : bibliothèque de journalisation C++, contenant un seul fichier d'en-tête.
Log4cpp : une série de bibliothèques C++ qui ajoutent de manière flexible des journaux aux fichiers, aux journaux système, à l'IDSA et à d'autres endroits.
templog : Une bibliothèque C++ légère qui peut ajouter une journalisation à vos applications C++
btsk : outil de lancement d'arbre de comportement de jeu
Objets évolutifs : bibliothèque informatique évolutive ANSI C++ basée sur des modèles qui peut vous aider à écrire très rapidement vos propres algorithmes d'optimisation stochastique.
Caffe : un framework de réseau neuronal rapide
CCV : une bibliothèque de vision par ordinateur moderne avec le langage C comme noyau
mlpack : bibliothèque d'apprentissage automatique C++ extensible
OpenCV : bibliothèque de vision par ordinateur open source
Recommandeur : une bibliothèque C pour les recommandations/suggestions de produits utilisant le filtrage collaboratif.
SHOGUN : outil d'apprentissage automatique Shogun
sofia-ml : une suite d'algorithmes incrémentaux rapides pour l'apprentissage automatique
Armadillo : une bibliothèque d'algèbre linéaire C++ de haute qualité qui offre un bon équilibre entre vitesse et facilité d'utilisation. La syntaxe est très similaire à MatlAB
blaze : bibliothèque mathématique C++ hautes performances pour les algorithmes denses et clairsemés.
ceres-solver : une bibliothèque C++ de Google pour modéliser et résoudre de grands problèmes complexes de moindres carrés non linéaires.
CGal : une collection d'algorithmes d'ensemble efficaces et fiables
CML : bibliothèque mathématique C++ gratuite pour les jeux et les graphiques
Eigen : une bibliothèque d'en-têtes de modèles C++ de haut niveau couvrant l'algèbre linéaire, les matrices, les opérations vectorielles, la résolution numérique et d'autres algorithmes associés.
GMTL : Mathematical Graphics Template Library est un ensemble d'outils permettant d'implémenter de manière approfondie des graphiques de base.
GMP : Une bibliothèque C/C++ pour des calculs de haute précision, traitant d'entiers signés, de nombres rationnels et de nombres à virgule flottante.
GStreamer : une bibliothèque pour créer des graphiques de composants de traitement multimédia
LIVE555 Streaming Media : Bibliothèque de streaming multimédia utilisant des protocoles standards ouverts (RTP/RTCP, RTSP, SIP)
libVLC : cadre multimédia libVLC (SDK VLC)
QtAV : Un framework de lecture multimédia basé sur Qt et FFmpeg qui peut vous aider à écrire facilement un lecteur
SDL : contrôle direct simple de la couche média
SFML : bibliothèque multimédia simple et rapide
Box2D : moteur physique de jeu 2D.
Bullet : moteur physique de jeu 3D.
Chipmunk : bibliothèque physique de jeux 2D rapide et légère
LiquidFun : moteur physique de jeu 2D
ODE : Open Dynamics Engine - une bibliothèque open source hautes performances pour simuler la dynamique des corps rigides.
ofxBox2D : wrapper de framework open source Box2D.
Simbody : une bibliothèque de dynamique/physique multicorps C++ hautes performances pour simuler la biomécanique articulaire et les systèmes mécaniques tels que les véhicules, les robots et les squelettes humains.
MOOS-Ivp : Un ensemble de modules C++ open source qui assurent l'autonomie des plateformes robotiques, notamment des véhicules marins autonomes.
MRPT : boîte à outils de programmation de robots mobiles
PCL : Point Cloud Library est un projet ouvert indépendant à grande échelle pour le traitement d'images 2D/3D et de nuages de points.
Bibliothèque robotique : une bibliothèque C++ autonome comprenant la dynamique, la planification et le contrôle des mouvements des robots.
RobWork : Une collection de bibliothèques C++ pour la simulation et le contrôle de systèmes robotiques.
ROS : Robot Operating System, qui fournit des bibliothèques et des outils pour aider les développeurs de logiciels à créer des applications robotiques.
ChaiScript : un langage de script intégré facile à utiliser pour C++.
Lua : un moteur de script petit et rapide pour les fichiers de configuration et les scripts d'application de base.
luacxx : API C++11 pour créer des liaisons Lua
SWIG : Un générateur de wrapper/interface qui permet à votre code C++ d'être lié à JavaScript, Perl, PHP, Python, Tcl et Ruby
V7 : Moteur JavaScript embarqué.
V8 : le moteur JavaScript rapide de Google qui peut être intégré à n'importe quelle application C++.
Cap'n Proto : Format d'échange de données rapide et système RPC.
céréales : bibliothèque de sérialisation C++11
FlatBuffers : bibliothèque de sérialisation économe en mémoire
MessagePack : bibliothèque de sérialisation binaire efficace pour C/C++, telle que JSON
ProtoBuf : Protocol buffer, format d'échange de données de Google.
SimpleBinaryEncoding : Encodage et décodage des informations applicatives au format binaire pour les applications à faible latence.
Thrift : IPC/RPC multilingue efficace, utilisé en C++, Java, Python, PHP, C# et de nombreux autres langages, développé à l'origine par Facebook.
libvpx : SDK d'encodage et de décodage VP8/VP9
FFMpeg : Une solution complète et multiplateforme pour l'enregistrement, la conversion de flux vidéo et audio.
libde265 : implémentation ouverte du codec vidéo h.265.
OpenH264 : codec H.364 open source.
Theora : Format de compression vidéo gratuit et open source.
LibXml++ : analyseur XML pour C++
PugiXML : un analyseur XML léger, simple et rapide pour C++ qui prend en charge XPath.
RapidXML : tente de créer l'analyseur XML le plus rapide tout en conservant la facilité d'utilisation, la portabilité et une compatibilité raisonnable avec le W3C.
TinyXML : Un analyseur XML C++ simple et petit qui peut être facilement intégré à d'autres projets.
TinyXML2 : Un analyseur CML C++ simple et rapide qui peut être facilement intégré à d'autres projets.
TinyXML++ : une toute nouvelle interface pour TinyXML qui tire parti de nombreux avantages du C++, des modèles, des exceptions et d'une meilleure gestion des exceptions.
Xerces-C++ : analyseur de validation XML écrit dans un sous-ensemble de C++ portable.
fil_local
statique_assert
nullptr
nonsauf
type décl
constexpr
char16_t
char32_t
aligner
alignas
auto
classe
défaut
supprimer
exporter
externe
en ligne
mutable
taillede
structurer
en utilisant
est_void
est_intégral
is_floating_point
est_array
is_enum
est_union
est_classe
est_fonction
est_pointeur
is_lvalue_reference
is_rvalue_reference
is_member_object_pointer
is_member_function_pointer
est_fondamental
est_arithmétique
est_scalaire
est_objet
est_composé
est_référence
is_member_pointer
est_const
est_volatile
est_trivial
is_trivially_copyable
is_standard_layout
is_literal_type
est_vide
est_polymorphique
est_abstrait
est_signé
est_non signé
est_constructible
est_trivially_constructible
is_nothrow_constructible
is_default_constructible
is_trivially_default_constructible
is_nothrow_default_constructible
is_copy_constructible
is_trivially_copy_constructible
is_nothrow_copy_constructible
is_move_constructible
is_trivially_move_constructible
is_nothrow_move_constructible
est_assignable
is_trivially_assignable
is_nothrow_assignable
is_copy_assignable
is_trivially_copy_assignable
is_nothrow_copy_assignable
is_move_assignable
is_trivially_move_assignable
is_nothrow_move_assignable
est_destructible
est_trivially_destructible
is_nothrow_destructible
has_virtual_destructor
std :: tableau
std :: forward_list
std :: commencer
std :: fin
std :: déplacer
Initialisation du conteneur
mettre en place
std :: unordered_map
std :: unordered_multimap
std :: unordered_set
std :: non ordonné_multiset
std :: make_tuple
STD :: Get
Std :: Tie
std :: hash <std :: string>
std :: hash <std :: u16string>
std :: hash <std :: u32string>
std :: hash <std :: wstring>
std :: hash <std :: error_code>
std :: hash <std :: bitset>
std :: hash <std :: type_index>
std :: hash <std :: vector <bool>>
std :: shared_ptr
std :: faible_ptr
std :: unique_ptr
auto_ptr (obsolète)
Basic_regex
sub_match
match_results
Fonction qualifiée CV
Qualification de devis
Fonction STD ::
std :: lier
std :: bad_function_call
mem_fn
Type Alias
Initialisation des membres de la classe
foncteur
délégué
Constructeur hérité
Déplacer le constructeur
Déplacer l'opérateur d'attribution
Brassets d'angle ">"
Modèle d'alias
modèle externe
modèle varia
Paramètres de modèle par défaut
std :: atomic <bool>
std :: atomic <char>
std :: atomic <char> signé>
STD :: ATOMIQUE <Charne non signé>
std :: atomic <fral>
std :: atomic <short non signé>
std :: atomic <nt>
std :: atomic <unsigned int>
std :: atomic <long>
std :: atomic <unsigned long>
std :: atomic <long long>
std :: atomic <unsigned long long>
std :: atomic <char8_t>
std :: atomic <char16_t>
std :: atomic <char32_t>
std :: atomic <whar_t>
std :: atomic <std :: int8_t>
std :: atomic <std :: uint8_t>
std :: atomic <std :: int16_t>
std :: atomic <std :: uint16_t>
std :: atomic <std :: int32_t>
std :: atomic <std :: uint32_t>
std :: atomic <std :: int64_t>
std :: atomic <std :: uint64_t>
std :: atomic <std :: int_least8_t>
std :: atomic <std :: uint_least8_t>
std :: atomic <std :: int_least16_t>
std :: atomic <std :: uint_least16_t>
std :: atomic <std :: int_least32_t>
std :: atomic <std :: uint_least32_t>
std :: atomic <std :: int_least64_t>
std :: atomic <std :: uint_least64_t>
std :: atomic <std :: int_fast8_t>
std :: atomic <std :: uint_fast8_t>
std :: atomic <std :: int_fast16_t>
std :: atomic <std :: uint_fast16_t>
std :: atomic <std :: int_fast32_t>
std :: atomic <std :: uint_fast32_t>
std :: atomic <std :: int_fast64_t>
std :: atomic <std :: uint_fast64_t>
Std :: Fil
std :: mutex
std :: verrouillage
std :: call_once
std :: atomic
std :: cond_ition_variable
std :: async
volatil
std :: futur
std :: thread_local
std :: exception_ptr
std :: make_exception_ptr
std :: current_exception
std :: rethrow_exception
std :: nited_exception
std :: throw_with_nesed
std :: rethrow_if_nesed
std :: error_category
std :: generic_category
std :: error_condition
std :: errc
std :: error_code
std :: system_error
Syntaxe: __pragma (chaîne littérale)
_PRAGMA OPÉRATEUR
_cplusplus macro
pour boucle pour (x: gamme)
aligner
alignas
std :: alignment_of
std :: aligné_storage
std :: max_align_t
STD :: Aligner
mot-clé explicite
Syntaxe: static_assert (expression constante, "String invite")
affirmation statique
limite numérique
corde brute
Syntaxe de type retour de retour
Syntaxe d'amis étendus
entier étendu
association sans restriction
Espace de noms en ligne
littéral défini par l'utilisateur
Enus fortement dactylographiés
appareil aléatoire
std :: ref et std :: cref
constexpr
Expression de lambda
nullptr
Empêcher le rétrécissement du type
Liste d'initialisateur— - Liste des initialistes
initializer_list (comme paramètre d'entrée)
Syntaxe et sémantique d'initialisation unifiées
COSSE
très longtemps
Déplacer la sémantique
référence
C99 Fonctionnalités
Règles SFINAE généralisées
Vérifiez si le type est std :: nullptr_t
IS_FINAL (Vérifiez si le type est le type de classe final)
Exchange (remplacer le paramètre réel par une nouvelle valeur et renvoyer sa valeur précédente)
Integer_Sequence (implémentation de la séquence entier de compilation-temps)
RBEGIN (Renvoie un itérateur inversé pointant vers un conteneur ou un tableau)
Crbegin (renvoie un itérateur inversé pointant vers un conteneur ou un tableau)
Rend (renvoie l'itérateur de queue inversé du récipient ou du tableau)
Crend (renvoie l'itérateur de queue inversé du récipient ou du tableau)
Make_reverse_iterator (Créez STD :: Reverse_iterator avec des types déduits des arguments)
Begin (Renvoie un itérateur pointant vers le début du conteneur ou du tableau)
cbegin (renvoie un itérateur pointant vers le début du conteneur ou du tableau)
fin (renvoie un itérateur pointant vers la fin du conteneur ou du tableau)
Cend (Renvoie un itérateur pointant vers la fin du conteneur ou du tableau)
RBEGIN (Renvoie un itérateur inversé pointant vers un conteneur ou un tableau)
Crbegin (renvoie un itérateur inversé pointant vers un conteneur ou un tableau)
Rend (renvoie l'itérateur de queue inversé du récipient ou du tableau)
Crend (renvoie l'itérateur de queue inversé du récipient ou du tableau)
registre
octet (type d'octet)
is_agregate (vérifie si le type est un type agrégé)
is_swappable_with (vérifie si un objet d'un type peut être échangé avec un objet du même type ou un type différent)
is_swappable (vérifie si un objet d'un type peut être échangé avec un objet du même type ou un type différent)
is_nothrow_swappable_with (vérifie si un objet d'un type peut être échangé avec un objet du même type ou un type différent)
is_nothrow_swappable (vérifie si un objet d'un type peut être échangé avec un objet du même type ou un type différent)
is_invocable (vérifie si le type peut être invoqué avec le type d'argument donné (comme avec std :: invoke))
is_invocable_r (vérifie si le type peut être invoqué avec le type d'argument donné (comme avec std :: invoke))
is_nothrow_invocable (vérifie si le type peut être appelé avec le type d'argument donné (comme avec std :: invoke)))
is_nothrow_invocable_r (vérifie si le type peut être appelé avec le type d'argument donné (comme avec std :: invoke))
invoke_result (déduire le type de résultat de l'appel d'un objet appelable avec un ensemble de paramètres réels)
VOID_T (modèle d'alias de paramètre variable)
conjonction (logique et méta-fonction des paramètres variables)
disjonction (logique ou méta-fonction avec paramètres variables)
ndisjonctionegation (fonction logique non sur l'élément)
Integral_Constant (constante de temps de compilation de type spécifié avec une valeur spécifiée)
AS_CONST (Obtenez la référence const à son paramètre)
Appliquer (appeler une fonction avec un tuple d'arguments)
Make_from_tuple (construit un objet à partir d'un tuple d'arguments)
Facultatif (peut ou non tenir un wrapper pour l'objet)
make_optional (créer un objet facultatif)
STD :: Swap (STD :: Facultatif) (Algorithme STD :: Swap spécialisé)
STD :: Hash <Std :: Facultatif> (Algorithme spécialisé STD :: Hash)
nullopt_t (indicateur de type facultatif avec état non initialisé)
BAD_OPTIONAL_ACCESS (Exception indiquant un accès vérifié à un facultatif sans valeur)
Nullopt (objet Nullopt_t Type)
variante (union identifiable de type type)
Visitez (appelez l'objet Fonction fourni avec chaque argument détenu par une ou plusieurs variantes)
Holds_alternative (vérifie si une variante détient actuellement un type donné)
std :: get (std :: variant) (lisez la valeur de la variante avec l'index ou le type donné (si le type est unique), lancez une exception sur l'erreur)
get_if (avec l'index ou le type donné (s'il est unique), obtenez un pointeur vers la valeur de la variante pointue, renvoyez un pointeur nul sur l'erreur)
std :: swap (variante std ::) (algorithme de swap spécialisé STD ::)
Monostat (un type d'espace réservé utilisé comme première option facultative d'une variante non constructible)
bad_variant_access (exception lancée lors de l'accès illégalement à la valeur de la variante)
variant_size (obtenez la taille de la liste des options de variantes au moment de la compilation)
variant_size_v (obtenez la taille de la liste des options de variantes au moment de la compilation)
variant_alternative (obtient le type de facultatif spécifié par son indice au moment de la compilation)
variant_alternative_t (obtient le type de facultatif spécifié par son indice à l'heure de la compilation)
STD :: Hash <STD :: Variant> (Algorithme spécialisé STD :: Hash)
variant_npos (l'indice de la variante illégale)
n'importe quel (un objet qui peut contenir des instances de tout type de copie-constructible (coprystructible))
std :: swap (std :: any) (algorithme de swap spécialisé) spécialisé)
any_cast (accès de type type à l'objet contenu)
Make_any (créer n'importe quel objet)
bad_any_cast (exception lancée par any_cast qui revient par valeur lorsque les types ne correspondent pas)
to_chars (convertir la valeur entier ou le point flottant à l'image de séquence de caractères)
From_chars (convertir la séquence de caractères en valeur entière ou point flottante)
chars_format (spécifiez le format utilisé par STD :: TO_CHARS et STD :: FROM_CHARS)
vide (vérifiez si le conteneur est vide)
Données (obtient un pointeur vers le tableau sous-jacent)
insert_or_assign (insérer un élément ou affecter à l'élément actuel si la clé existe déjà)
try_emplace (si la clé n'existe pas, insérez-la en place, si la clé existe, ne faites rien)
Extrait (relâchez un nœud d'un autre conteneur)
fusionner (joindre les nœuds à partir d'un autre conteneur)
insert_or_assign (insérer un élément ou affecter à l'élément actuel si la clé existe déjà)
try_emplace (si la clé n'existe pas, insérez-la en place, si la clé existe, ne faites rien)
Extrait (relâchez un nœud d'un autre conteneur)
fusionner (joindre les nœuds à partir d'un autre conteneur)
<h5 id = "utilisateur-content-cpp_headfile_initializer_list" tabindex = "- 1" class = "head