Standard Template Library

Reviews
Standard Template Library Alireza Fathi STL • Containers • Iterators • Algorithms • An open-closed environment • Open for extension and closed for modification containers • Sequence containers – Ordered collections – Sorted by the sequence of addition • Associative containers – Sorted collections – Sorted by value (key) • Container adapters Sequence containers • Vectors • Deques • Lists Associative containers • • • • Sets Multisets Maps Multimaps Container adapters • Stacks • Queues • Priority queues Iterators • Iterator is an object that can navigate over elements. • An iterator points to a certain position of a container. • Similar to pointers Algorithms • There are several algorithms in STL such as searching, sorting, copying, reordering …. Common container operations • • • • • • • • • • • Some constructors, destructor == , != , < , > , <= , >= , = c.size( ) c.empty( ) swap(c1,c2) c.begin( ) , c.rbegin( ) c.end( ) , c.rend( ) c.insert(pos,element) c.earase(beg,end) c.clear( ) c.max_size( ) Vector • • • • A vector models a dynamic array The elements always have a certain order Vectors provide random access Good performance for appending or deleting at the end but not middle • Pointers are interpreted by insertion in middle Vector operations • • • • • • • • • • • • C.capacity( ) C.reserve(int) C.at(idx) C[idx] C.front( ) C.back( ) C.insert(pos,elem) C.insert(pos,n,elem) C.push_back(elem) C.pop_back(elem) C.earase(pos) C.earase(beg,end) C.resize(num) C.resize(num,elem) C.clear( ) Deques • Very similar to vector. • Dynamic array, random access, same interface • But dynamic array in deque open at both ends Deques compared with Vectors • Fast insertion and removing at both beginning and the end • A bit slower than vectors • Iterators are smart pointers of a special type because they can jump between blocks • For systems have limited block sizes of memory deques are larger • We can not avoid reference interpretation in deques • The container releases the memory if it is no farther used Extended deque operations • • • • • • C.push_back(elem) C.push_front(elem) C.pop_back(elem) C.pop_front(elem) C.front( ) C.end( ) Lists • A list manages its elements as a doubly linked list • The list is different in several ways with a vector or deque Abilities of lists • Does not provide random access • Inserting and removing elements is fast at each positions and not just the ends • Inserting and deleting pointers does not invalidate pointers, references, and iterators or other elements • A list supports exception handling in a way that every operation succeeds or is no-op. Lists compared with vec & deq • There is no at( ) operation in lists • Don’t provide operation for capacity • Lists provide many special member functions for moving elements. • Function c1.splice(pos,c2,c2pos) • c1.merge(c2) c1.merge(c2,op) • c1.sort( ) c1.sort(op) • c1.unique( ) c1.unique(op) • c1.reverse( ) Sets and Multisets • Sets and Multisets sort their elements automatically according to a certain sorting criterion. • The difference between two is the multisets allow duplicates but sets not. • Sets and Multisets do not provide operations for direct part access • Red-black trees • Red-black trees are good for both changing the number of elements and searching the tree Search operations • count(elem) • find(elem) • lower_bound(elem) • The first position elem will inserted • upper_bound(elem) • The last position elem will inserted • equal_range(elem) • The range of elements == elem Maps and Multimaps • Are containers that manage key/value pairs as elements. • Sorting occurs due to key. • Again multimap allows duplication but map not. • They are binary balanced trees • Very similar to sets • Hash tables are not included in C++ standard because they say …. • But you can use some implementations of it • hash_set, hash_multiset, hash_map, hash_multimap – I can refer you to “The C++ programming language” by stroustrup 17.6 Stack – push( ) – pop( ) – top( ) Queue – – – – push( ) pop( ) front( ) back( ) Priority_queue – push( ) – pop( ) – top( ) Iterators • Header files for iterators • Special iterators • Like pointers input iterator output iterator forward iterator bidirectional iterator random access iterator • • • • Input iterator : reads forward Output iterator : writes forward Forward iterator : reads and writes forward Bidirectional iterator : reads and writes forward and backward • Random access iterator : reads and writes with random access Operations for Input iterators *iter iter -> member ++iter iter++ iter1 == iter2 iter1 != iter2 You can read every thing just once and you can just read Operations for output iterators • *iter = value • ++iter • iter++ • You can write every thing just once and you can just write and nothing else Operation of forward iterators • • • • • • • *iter iter->member ++iter iter++ iter1 == iter2 iter1 != iter2 iter1 = iter2 Operations for bidirectional iterators • --iter • iter-• Plus all operations of forward iterator Operations of random access iterator • • • • • • • • • • • • All operations of bidirectional iterators iter[n] iter += n iter -= n iter+n n+iter iter-n iter1 – iter2 iter1 < iter2 iter1 > iter2 iter1 <= iter2 iter1 >= iter2 • vector coll; • vector::iterator pos; • pos = coll.begin( ); • #include • void advance (InputIterator & pos, Dist n) • Dist distance (InputIterator pos1, InputIterator pos2) • void Iter_swap (ForwardIterator pos1, ForwardIterator pos2) – Swaps the value to which iterators pos1 & pos2 are reffered Algorithms • #include • The _if suffix • Passing either a value or a function » find( ) find_if( ) • The _copy suffix • Not only manipulated but also copied » reverse( ) reverse_copy( ) Classifying algorithms • Nonmodifying algorithms • Neither change the value nor the order of elements • Modifying algorithms • Change the value of elements • Removing algorithms • A special case of modifying algorithms that can remove elements • Mutating algorithms • They change the order of elements (and not their values) by assigning and swapping their values • Sorting algorithms • Are also special kind of mutating algorithms because change the order • Sorted range algorithms • They require that the ranges on which they operate are sorted according to their sorting criterion • Numeric algorithms • These algorithms combine numeric elements in different ways Nonmodifyings • • • • • • • • for_each( ) count( ) count_if( ) min_element( ) max_element( ) find( ) find_if( ) search_n( ) • • • • • • search( ) find_end( ) find_first_of( ) adjacent_of( ) equal( ) mismatch( ) • lexicographical_compare( ) Modifyings • • • • • • • for_each( ) copy( ) copy_backward( ) transform( ) merge( ) swap_ranges( ) fill( ) • • • • • • • fill_n( ) generate( ) generate_n( ) replace( ) replace_if( ) replace_copy( ) replace_copy_if( ) Removings • remove( ) • remove_if( ) • remove_copy( ) • remove_copy_if( ) • unique( ) • unique_copy( ) Mutatings • • • • • reverse( ) reverse_copy( ) rotate( ) rotate_copy( ) next_permutation( ) • • • • prev_permutation( ) random_shuffle( ) partition( ) stable_partition( ) Sortings • • • • • • sort( ) stable_sort( ) partial_sort( ) partial_sort_copy( ) nth_element( ) partition( ) • • • • • stable_partition( ) make_heap( ) push_heap( ) pop_heap( ) sort_heap( ) Sorted ranges • • • • • • binary_search( ) includes( ) lower_bound( ) upper_bound( ) equal_range( ) merge( ) • set_union( ) • set_intersection( ) • set_difference( ) • set_symmetric_difference( ) • inplace_merge( ) Numerics • accumulate( ) • inner_product( ) • adjacent_difference( ) • partial_sum( ) My references through these days!!! • • • • • • • • • • 1 – C++ -programming language [Stroustrup] 2 – C++ - how to … [Deitel] 3 – UML with rational rose [Buggs] 4 – The C++ standard library [Josuttis] 5 – C++ FAQs [Cline] 6 – Data structures and program design in C++ [Kruse] 7 – A complete guide to programming in C++ [Kirch] 8 – Visual C++ 6.0 [Microsoft] 9 – Networking a beginner’s guide [Hallberg] 10 - …. AYLOOZ Hope you had a happy semester

Related docs
The Standard Template Library
Views: 8  |  Downloads: 2
Standard Template Library
Views: 16  |  Downloads: 1
The Standard Template Library
Views: 14  |  Downloads: 0
Standard Template Library
Views: 19  |  Downloads: 1
Standard Template Library
Views: 4  |  Downloads: 0
Standard Template Library
Views: 5  |  Downloads: 0
Standard Template Library
Views: 28  |  Downloads: 0
Standard Template Library
Views: 188  |  Downloads: 2
The Standard Template Library
Views: 0  |  Downloads: 0
MCSTL The Multi-Standard Template Library
Views: 4  |  Downloads: 0
STANDARD TEMPLATE
Views: 27  |  Downloads: 1
The C++ Standard Template Library
Views: 18  |  Downloads: 2
Other docs by moneu
Noncompetition and other covenants of seller
Views: 175  |  Downloads: 0
MDR-whitepaper
Views: 258  |  Downloads: 5
Transcript of Tonkin Gulf Resolution
Views: 177  |  Downloads: 0
Conditional agreement to form partnership
Views: 295  |  Downloads: 10
Option to Purchase Building
Views: 139  |  Downloads: 4
Employment of general manager
Views: 300  |  Downloads: 7
EMPLOYEE NON DISCLOSURE AGREEMENT
Views: 918  |  Downloads: 89
WARRANTY DEED WITH VENDORS LIEN
Views: 967  |  Downloads: 11
Canning business
Views: 331  |  Downloads: 3
JosephXiongPresentation
Views: 197  |  Downloads: 5