This document is a slide presentation about the C++ Standard Library and Boost libraries. It discusses containers, iterators, algorithms, strings, input/output and other components of the C++ Standard Library introduced in C++11. It also provides an overview of the different categories of Boost libraries and some examples of commonly used Boost libraries. The presentation aims to provide an introduction to these libraries and show some practical examples of using them.
CDays14 - CPP05 - Standard Library: STL e boost, la BCL di C++
1. CPP05 - Standard Library:
STL e boost, la BCL di C++
Alessio Gogna
agogna@gmail.com - @alecsg77
http://alecsg77.net/
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
4. Agenda
•
Sondaggio
•
Introduzione alla C++11 Standard Library
•
Alcune premesse
•
Esempi pratici
•
Introduzione alle boost libraries
•
Esempio pratico
•
Recap
•
Q&A
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
9. C++11 Standard Library - Perché
Pro
•
Generiche
Contro
•
Basate sui Template e function objects
•
Performanti
Argomenti generici o molto complessi
•
Supporto dei compilatori
•
Efficienti
Robuste
Type check a compile-time
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Incompatibilità binaria
Standard interfacce e comportamenti
•
Code inlining
•
Minor supporto Intellisense
Debug più difficile
Decisioni di flusso a compile-time
•
Errori complessi
Metaprogramming avanzata
14. Containers
Sequence containers
array
static contiguous array
vector
dynamic contiguous array
deque
double-ended queue
forward_list
singly-linked list
list
doubly-linked list
Container adaptors
stack
adapts a container to provide stack (LIFO data structure)
queue
adapts a container to provide queue (FIFO data structure)
priority_queue
adapts a container to provide priority queue
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
15. Containers
Associative containers
set
unique keys, sorted by keys
map
key-value pairs, sorted by keys, keys are unique
multiset
keys, sorted by keys
multimap
key-value pairs, sorted by keys
Unordered Associative containers
unordered_set
unique keys, hashed by keys
unordered_map
key-value pairs, hashed by keys, keys are unique
unordered_multiset
keys, hashed by keys
unordered_multimap
key-value pairs, hashed by keys
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
22. boost – Categorie
String and text processing
Concurrent Programming
Memory
Containers
Math and numerics
Parsing
Iterators
Correctness and testing
Patterns and Idioms
Algorithms
Data structures
Programming Interfaces
Function objects and
higher-order programming
Domain Specific
State Machines
Image processing
System
Input/Output
Miscellaneous
Inter-language support
Broken compiler
workarounds
Generic Programming
Template Metaprogramming
Preprocessor
Metaprogramming
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Language Features
Emulation
23. boost – Librerie
Accumulators
Algorithm
Any
Array
Asio
Assign
Atomic
Bimap
Bind
Call Traits
Chrono
Circular Buffer
Compatibility
Compressed Pair
Concept Check
Config
Container
Context
Conversion
Coroutine
CRC
Date Time
Dynamic Bitset
Enable If
Interprocess
Exception
Interval
Filesystem
Intrusive
Flyweight
IO State Savers
Foreach
Iostreams
Format
Iterator
Function
Lambda
Function Types
Lexical Cast
Functional
Local Function
Functional/Factory
Locale
Functional/Forward
Lockfree
Functional/Hash
Log
Functional/Overloade
Math
d Function
Math Common
Fusion
Factor
Geometry
Math Octonion
GIL
Math Quaternion
Graph
Math/Special
Heap
Functions
ICL
Math/Statistical
Identity Type
Distributions
In Place Factory
Member Function
Integer
Meta State Machine
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Min-Max
Move
MPI
MPL
Multi-Array
Multi-Index
Multiprecision
Numeric Conversion
Odeint
Operators
Optional
Parameter
Phoenix
Pointer Container
Polygon
Pool
Predef
Preprocessor
Program Options
Property Map
Property Tree
Proto
Python
Random
Range
Ratio
Rational
Ref
Regex
Result Of
Scope Exit
Serialization
Signals2
Smart Ptr
Spirit
Statechart
Static Assert
String Algo
Swap
System
Test
Thread
Timer
Tokenizer
TR1
Tribool
TTI
Tuple
Type Erasure
Type Traits
Typed In Place
Factory
Typeof
uBLAS
Units
Unordered
Utility
Uuid
Value Initialized
Variant
Wave
Xpressive
24. boost – Perché
Pro
•
Nate per essere standard
Contro
•
Facilità di utilizzo
•
Collezione di librerie indipendenti
Medesime problematiche
•
Compili solo ciò che ti serve
•
Alta qualità
Review del codice e regression tests
•
Portabilità
Supporto per vari compilatori e OS
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Stessi paradigmi di STL
Dimensioni notevoli
~10 000 file per ~100 Mb di occupazione
•
Tante librerie
Difficolta di ricerca e scelta
26. Q&A
Tutto il materiale di questa sessione su
http://www.communitydays.it/
Lascia il feedback su questa sessione,
potrai essere estratto per i nostri premi!
Seguici su
Twitter @CommunityDaysIT
Facebook http://facebook.com/cdaysit
#CDays14
#CDays14 – Milano 25, 26 e 27 Febbraio 2014