CPP05 - Standard Library:
STL e boost, la BCL di C++
Alessio Gogna
agogna@gmail.com - @alecsg77

http://alecsg77.net/
#CDa...
Grazie a
Sponsor

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
italiancpp.org
@italiancpp
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Agenda
•

Sondaggio

•

Introduzione alla C++11 Standard Library

•

Alcune premesse

•

Esempi pratici

•

Introduzione a...
Sondaggio
Greatest Common Divisor

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
The C++ Standard Library

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Standard Template Library

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
C++11 Standard Library
Containers

Localizations

Iterators

Regular Expression

Algorithms

Threads

Numerics

Atomic ope...
C++11 Standard Library - Perché
Pro
•

Generiche

Contro
•

 Basate sui Template e function objects
•

Performanti

 Arg...
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Alcune premesse
Prima di vedere del codice

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
String
Type

Definition

string

basic_string<char>

wstring

basic_string<wchar_t>

u16string

basic_string<char16_t>

u3...
Input/Output

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Containers
Sequence containers
array

static contiguous array

vector

dynamic contiguous array

deque

double-ended queue...
Containers
Associative containers
set

unique keys, sorted by keys

map

key-value pairs, sorted by keys, keys are unique
...
Iterators

Random
Bidirectional
Forward

Input
#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Output
Algorithms
Classificazione

Algoritmi

Non-modifying sequence

all_of, any_of, none_of, for_each, count, count_if, mismatc...
Esempi pratici
Finalmente un po’ di codice

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
INTERESSANTE...

…SICURO NON
MANCHI NULLA?
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
boost

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
C++11 Standard Library
Containers

Localizations

Iterators

Regular Expression

Algorithms

Threads

Numerics

Atomic ope...
boost – Categorie
String and text processing

Concurrent Programming

Memory

Containers

Math and numerics

Parsing

Iter...
boost – Librerie
Accumulators
Algorithm
Any
Array
Asio
Assign
Atomic
Bimap
Bind
Call Traits
Chrono
Circular Buffer
Compati...
boost – Perché
Pro
•

Nate per essere standard

Contro
•

 Facilità di utilizzo
•

Collezione di librerie indipendenti

...
Esempio pratico
Boost your app!

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Q&A
Tutto il materiale di questa sessione su

http://www.communitydays.it/
Lascia il feedback su questa sessione,
potrai e...
Upcoming SlideShare
Loading in …5
×

CDays14 - CPP05 - Standard Library: STL e boost, la BCL di C++

506 views

Published on

Al moderno C++11 si affianca una rinnovata e ampliata Standard Library, dando così al codice C++ maggiore indipendenza dal compilatore e dalla piattaforma.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
506
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

CDays14 - CPP05 - Standard Library: STL e boost, la BCL di C++

  1. 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
  2. 2. Grazie a Sponsor #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  3. 3. italiancpp.org @italiancpp #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  4. 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
  5. 5. Sondaggio Greatest Common Divisor #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  6. 6. The C++ Standard Library #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  7. 7. Standard Template Library #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  8. 8. C++11 Standard Library Containers Localizations Iterators Regular Expression Algorithms Threads Numerics Atomic operations Input/Output Utilities Strings C Standard Library #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  9. 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
  10. 10. #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  11. 11. Alcune premesse Prima di vedere del codice #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  12. 12. String Type Definition string basic_string<char> wstring basic_string<wchar_t> u16string basic_string<char16_t> u32string basic_string<char32_t> #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  13. 13. Input/Output #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  14. 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. 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
  16. 16. Iterators Random Bidirectional Forward Input #CDays14 – Milano 25, 26 e 27 Febbraio 2014 Output
  17. 17. Algorithms Classificazione Algoritmi Non-modifying sequence all_of, any_of, none_of, for_each, count, count_if, mismatch, equal, find, find_if, find_if_not, find_end, find_first_of, adjacent_find, search, search_n Modifying sequence copy, copy_if, copy_n, copy_backward, move, move_backward, fill, fill_n, transform, generate, generate_n, remove, remove_if, remove_copy, remove_copy_if, replace, replace_if, replace_copy, replace_copy_if, swap, swap_ranges, iter_swap, reverse, reverse_copy, rotate, rotate_copy, random_shuffle, shuffle, unique, unique_copy Partitioning is_partitioned, partition, partition_copy, stable_partition, partition_point Sorting is_sorted, is_sorted_until, sort, partial_sort, partial_sort_copy, stable_sort, nth_element Sorted range lower_bound, upper_bound, binary_search, equal_range, merge, inplace_merge, includes, set_difference, set_intersection, set_symmetric_difference, set_union Heap is_heap, is_heap_until, make_heap, push_heap, pop_heap, sort_heap Minimum/maximum max, max_element, min, min_element, minmax, minmax_element, lexicographical_compare, is_permutation, next_permutation, prev_permutation Generic Numeric iota, partial_sum, accumulate, inner_product, adjacent_difference #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  18. 18. Esempi pratici Finalmente un po’ di codice #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  19. 19. INTERESSANTE... …SICURO NON MANCHI NULLA? #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  20. 20. boost #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  21. 21. C++11 Standard Library Containers Localizations Iterators Regular Expression Algorithms Threads Numerics Atomic operations Input/Output Utilities Strings C Standard Library #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  22. 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. 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. 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
  25. 25. Esempio pratico Boost your app! #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  26. 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

×