1 / 43

Exploring Data Structures Using C++ STL: Associative Containers and Algorithms

Learn about associative containers like maps and multimaps in C++ STL, along with generic algorithms for data manipulation. Explore various ways to declare and operate on set, multiset, map, and multimap containers.

marcelh
Download Presentation

Exploring Data Structures Using C++ STL: Associative Containers and Algorithms

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 13 Standard Template Library (STL) II Data Structures Using C++

  2. Chapter Objectives • Learn more about the standard template library (STL) • Become familiar with the associative containers • Explore how associative containers are used to manipulate data in a program • Learn about various generic algorithms Data Structures Using C++

  3. Class pair The class pair has two constructors: the default constructor, and a constructor with two parameters. The general syntax to declare an object of the type pair is: where expr1 is of the type Type1 and expr2 is of the type Type2 Data Structures Using C++

  4. Relational Operators for the class pair Data Structures Using C++

  5. Type pair and Function make_pair The header file utility also contains the definition of the function template make_pair. With the help of the function make_pair, we can create pairs without explicitly specifying the type pair. template<class T1, class T2> pair<T1, T2> make_pair(const T1& X, const T2& Y) { return (pair<T1, T2>(X, Y)); } Data Structures Using C++

  6. Associative Containers in STL • Elements in associative container automatically sorted according to some ordering criteria • Default ordering criterion is relational operator < (less than) • Users can also specify their own ordering criterion • Predefined Associative Containers • Sets • Multisets • Maps • multimaps Data Structures Using C++

  7. Various Ways to Declare a Set/Multiset Container Data Structures Using C++

  8. Various Ways to Declare a Set/Multiset Container Data Structures Using C++

  9. Operations in a set or multiset Data Structures Using C++

  10. Associative Containers: map and multimap • Containers map and multimap manage their elements in the form key/value • Elements automatically sorted according to some sort criteria applied on key • Default sorting criterion is relational operator < (less than) • User can also specify other sorting criteria • For user-defined data types, relational operators must be properly overloaded Data Structures Using C++

  11. Associative Containers: map and multimap • Only difference between containers map and multimap is: container multimap allows duplicates, whereas the container map does not • The name of the class defining the container map is map; the name of the class defining the container multimap is multimap Data Structures Using C++

  12. Associative Containers: map and multimap • The name of the header file containing the definitions of the classes map and multimap, and the definitions of the functions to implement various operations on these containers, is map • Therefore, to use any of these containers, the program must include the following statement: #include <map> Data Structures Using C++

  13. Various Ways to Declare a map/multimap Container Data Structures Using C++

  14. Various Ways to Declare a map/multimap Container Data Structures Using C++

  15. Operations in a map/multimap Data Structures Using C++

  16. Containers, Header Files, and Iterators Data Structures Using C++

  17. Algorithms • Some operations very specific to container; provided as part of container definition • Generic algorithms common to all containers; contained in header file algorithm: • Find • Sort • Merge Data Structures Using C++

  18. STL Algorithm Classification • Nonmodifying algorithms • Investigate, do not modify elements of container • Modifying algorithms • Modify the elements of a container by rearranging, removing, or changing the values of the elements • Mutating algorithms: change order f elements but not their value Data Structures Using C++

  19. STL Algorithm Classification • Numeric algorithms • Designed to perform numeric calculations on elements • Heap algorithms • Implement heap sort Data Structures Using C++

  20. Nonmodifying Algorithms Data Structures Using C++

  21. Modifying Algorithms Data Structures Using C++

  22. Numeric and Heap Algorithms Data Structures Using C++

  23. Function Objects • To make the generic algorithms flexible, the STL usually provides two forms of an algorithm using the mechanism of function overloading • First form of algorithm uses natural operation to accomplish this goal • In second form, user can specify criteria based on which the algorithm processes the elements Data Structures Using C++

  24. Function Objects • A function object contains a function that can be treated as a function using the function call operator, () • A function object is a class template that overloads the function call operator, () • In addition to allowing you to create your own function objects, STL provides arithmetic, relational, and logical function objects • STL’s function objects contained in header file functional Data Structures Using C++

  25. Arithmetic STL Function Objects Data Structures Using C++

  26. Relational STL Function Objects Data Structures Using C++

  27. Relational STL Function Objects Data Structures Using C++

  28. Logical STL Function Objects Data Structures Using C++

  29. Predicates • Special types of function objects that return boolean values • Unary predicates check a specific property for a single argument • Binary predicates check a specific property for a pair of (two) arguments Data Structures Using C++

  30. Predicates • Typically used to specify a searching or sorting criterion • In STL, always return the same result for the same value • The functions that modify their internal states cannot be considered predicates Data Structures Using C++

  31. Insert Iterators • STL provides three insert iterators to insert elements at destination • Class vector does not support the push_front operation, this iterator cannot be used for a vector container Data Structures Using C++

  32. Insert Iterators • Back_inserter • Uses the push_back operation of the container in place of the assignment operator • Front_inserter • Uses the push_front operation of the container in place of the assignment operator • Inserter • Uses the container’s insert operation in place of the assignment operator Data Structures Using C++

  33. Functions and Their Uses • fill: used to fill a container with elements • fill_n: used to fill in the next n elements • generate and generate_n: used to generate elements and fill a sequence • find, find_if, find_end, and find_first_of: used to find the elements in a given range Data Structures Using C++

  34. Functions and Their Uses • remove: used to remove certain elements from a sequence • remove_if: used to remove certain elements from a sequence using some criterion Data Structures Using C++

  35. Functions and Their Uses • remove_copy: copies the elements in a sequence into another sequence by excluding certain elements from the first sequence • remove_copy_if: copies the elements in a sequence into another sequence by excluding certain elements, using some criterion, from the first sequence Data Structures Using C++

  36. Functions and Their Uses • swap, iter_swap, and swap_ranges: used to swap elements • search, search_n, sort, and binary_search: used to search elements • adjacent_find: used to find the first occurrence of consecutive elements satisfying a certain criterion Data Structures Using C++

  37. Algorithms • merge: merges two sorted lists • inplace_merge: used to combine two sorted, consecutive sequences • reverse: reverses the order of the elements in a given range • reverse_copy: reverses the order of the elements in a given range while copying into a destination range.The source is not modified Data Structures Using C++

  38. Algorithms • rotate: rotates the elements in a given range • rotate_copy: copies the elements of the source at the destination in a rotated order • count: counts the occurrences of a specified value in a given range • count_if: counts the occurrences of a specified value in a given range satisfying a certain criterion Data Structures Using C++

  39. Algorithms • max: used to determine the maximum of two values • max_element: is used to determine the largest element in a given range • min: used to determine the minimum of two values • min_element: used to determine the smallest element in a given range Data Structures Using C++

  40. Algorithms • random_shuffle: used to randomly order the elements in a given range • for_each: used to access and process each element in a given range by applying a function, which is passed as a parameter • transform: creates a sequence of elements by applying certain operations to each element in a given range Data Structures Using C++

  41. Algorithms • includes: determines whether the elements of one range appear in another range • set_intersection: used to find the elements that are common to two ranges of elements • set_union: used to find the elements that are contained in two ranges of elements • set_difference: used to find the elements in one range of elements that do not appear in another range of elements Data Structures Using C++

  42. Algorithms • set_symmetric_difference: given two ranges of elements, determines elements in first range but not the second, or in second range but not first • accumulate, adjacent_difference, inner_product, and partial_sum: numerical functions that manipulate numeric data Data Structures Using C++

  43. Chapter Summary • Standard Template Library (STL) • Associative Containers • Operations on associative containers • Function and algorithms on associative containers • Example usage of function and algorithms Data Structures Using C++

More Related