À QUOI ÇA SERT ?
Le C++ ne se résume pas au langage.
Sa bibliothèque standard fournit énormément de briques déjà testées et optimisées.
1. CONTENEURS
Code: Select all
std::vector
std::array
std::map
std::unordered_map
2. CHAÎNES
Code: Select all
std::string
std::wstring
3. MÉMOIRE
Code: Select all
std::unique_ptr
std::shared_ptr
4. THREADS
Code: Select all
std::thread
std::mutex
std::condition_variable
5. ATOMIQUES
Code: Select all
std::atomic<int>
6. TEMPS
Code: Select all
std::chrono
7. FILESYSTEM
Code: Select all
std::filesystem
- chemins ;
- fichiers ;
- répertoires ;
- tailles ;
- itération.
8. POURQUOI UN DEV SYSTÈME DOIT CONNAÎTRE LA STL
Faire du bas niveau ne signifie pas :
"tout réécrire à la main".
Exemple :
Si tu as besoin d’un buffer dynamique en user-mode :
Code: Select all
std::vector<std::byte> buffer(4096);
Code: Select all
void* buffer = malloc(4096);
Code: Select all
buffer.data()
9. QUAND LA STL PEUT ÊTRE LIMITÉE
Dans :
- kernel ;
- firmware ;
- environnement freestanding ;
Il faut alors connaître l’environnement précis.
10. ZERO-OVERHEAD ABSTRACTION
Une philosophie majeure du C++ est :
"Tu ne paies pas pour ce que tu n’utilises pas."
Et une abstraction bien conçue doit tendre vers le coût nécessaire de l’équivalent manuel.
Cela ne veut pas dire que tout est gratuit.
Par exemple :
- allocation vector = coût réel ;
- shared_ptr = compteur de références ;
- exceptions = mécanisme runtime ;
- virtual = dispatch indirect.
À RETENIR
La bibliothèque standard est une boîte à outils.
Un bon développeur système sait :
- quand utiliser une abstraction sûre ;
- quand descendre au niveau brut ;
- quel coût chaque abstraction implique.
