c++ programming: program design including data structures, second edition
DESCRIPTION
C++ Programming: Program Design Including Data Structures, Second Edition. Chapter 22: Standard Template Library (STL). Objectives. In this chapter you will: Learn about the Standard Template Library (STL) - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/1.jpg)
C++ Programming:Program Design Including Data Structures, Second Edition
Chapter 22: Standard Template Library (STL)
![Page 2: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/2.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 2
Objectives
In this chapter you will:• Learn about the Standard Template Library
(STL)• Become familiar with the basic components of
the STL: containers, iterators, and algorithms• Explore how various containers are used to
manipulate data in a program• Discover the use of iterators • Learn about various generic algorithms
![Page 3: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/3.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 3
Introduction
• ANSI/ISO Standard C++ is equipped with a Standard Template Library (STL)
• The STL provides class templates to process lists, stacks, and queues
• This chapter discusses many important features of the STL and shows how to use its tools
![Page 4: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/4.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 4
Components of the STL
• Components of the STL:− Containers
− Iterators
− Algorithms
• Containers and iterators are class templates• Iterators are used to step through the
elements of a container• Algorithms are used to manipulate data
![Page 5: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/5.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 5
Container Types
• Containers are used to manage objects of a given type
• Three categories:
− Sequence (sequential) containers
− Associative containers
− Container adapters
![Page 6: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/6.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 6
Sequence Containers
• Every object has a specific position
• Three predefined sequence containers:
− Vector
− Deque
− List
![Page 7: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/7.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 7
Sequence Container: Vector
• A vector container stores and manages its objects in a dynamic array
• To use a vector container in a program, the program must #include <vector>
• The class vector contains several constructors, including the default constructor
![Page 8: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/8.jpg)
![Page 9: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/9.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 9
Sequence Container: vector (continued)
• Basic vector operations
− Item insertion
− Item deletion
− Stepping through the elements
![Page 10: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/10.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 10
Sequence Container: vector (continued)
• vector elements can be accessed using the operations below:
![Page 11: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/11.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 11
Declaring an Iterator to a Vector Container
• vector contains a typedef iterator
• For example, the statement
vector<int>::iterator intVecIter;
declares intVecIter to be an iterator into a vector container of the type int
![Page 12: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/12.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 12
Container and Functions begin and end
• Every container contains the member function begin and end
− begin returns the position of the first element
− end returns the position of the last element
• Both functions have no parameters
![Page 13: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/13.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 13
Operations of the vector Class
• Some vector member functions:
![Page 14: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/14.jpg)
![Page 15: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/15.jpg)
![Page 16: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/16.jpg)
![Page 17: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/17.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 17
The copy Algorithm
• Function copy: convenient way to output the elements of a container
• Can be used with any container type• Allows you to copy the elements from one
place to another− Can output the elements of a vector
− Can copy the elements of one vector into another
![Page 18: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/18.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 18
The ostream Iterator and the Function copy
• One way to output the contents of a container is to use a for loop, along with begin (initialize) and end (loop limit)
• copy can output a container; an iterator of the type ostream specifies the destination
• When you create an iterator of the type ostream, specify the type of element that the iterator will output
![Page 19: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/19.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 19
Sequence Container: deque
• deque stands for double ended queue
• Implemented as dynamic arrays
• Elements can be inserted at both ends
• A deque can expand in either direction
• Elements are also inserted in the middle
![Page 20: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/20.jpg)
![Page 21: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/21.jpg)
![Page 22: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/22.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 22
Sequence Container: list
• Lists are implemented as doubly linked lists
• Every element in a list points to both its immediate predecessor and its immediate successor (except the first and last element)
• The list is not a random access data structure
![Page 23: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/23.jpg)
![Page 24: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/24.jpg)
![Page 25: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/25.jpg)
![Page 26: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/26.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 26
Iterators
• An iterator points to the elements of a container (sequence or associative)
• Iterators provide access to each element
• The most common operations on iterators are ++ (increment), and * (dereference)
![Page 27: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/27.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 27
Types of Iterators
• Five types of iterators:
− Input iterators
− Output iterators
− Forward iterators
− Bidirectional iterators
− Random access iterators
![Page 28: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/28.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 28
Input Iterators
• Input iterators, with read access, step forward element-by-element return the values element-by-element
• Input iterators are provided for reading data from an input stream
![Page 29: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/29.jpg)
![Page 30: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/30.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 30
Output Iterators
• Output iterators, with write access, step forward element-by-element
• Output iterators are provided for writing data to an output stream
![Page 31: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/31.jpg)
![Page 32: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/32.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 32
Forward Iterators
• Forward iterators combine all of the functionality of input iterators and almost all of the functionality of output iterators
![Page 33: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/33.jpg)
![Page 34: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/34.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 34
Bidirectional Iterators
• Bidirectional iterators are forward iterators that can also iterate backward over the elements
• The operations defined for forward iterators apply to bidirectional iterators
• Use the decrement operator to step backward
![Page 35: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/35.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 35
Random Access Iterators
• Random access iterators are bidirectional iterators that can randomly process the elements of a container
• Can be used with containers of the types vector, deque, string, as well as arrays
• Operations defined for bidirectional iterators apply to random access iterators
![Page 36: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/36.jpg)
![Page 37: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/37.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 37
typedef iterator
• Every container contains a typedef iterator
• The statement
vector<int>::iterator intVecIter;
declares intVecIter to be an iterator into a vector container of the type int
![Page 38: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/38.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 38
typedef const_iterator
• With the help of an iterator into a container and the dereference operator, *, you can modify the elements of the container
• If the container is declared const, then we must prevent the iterator from modifying the elements
• Every container contains typedef const_iterator to handle these situations
![Page 39: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/39.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 39
Stream Iterators
• istream_iterator
− Used to input data into a program from an input stream
• ostream_iterator
− Used to output data from a program into an output stream
![Page 40: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/40.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 40
Associative Containers
• Elements in associative container are automatically sorted according to some ordering criteria
• The predefined associative containers in the STL are:− Sets
− Multisets
− Maps
− Multimaps
![Page 41: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/41.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 41
Associative Containers: set and multiset
• Associative containers set and multiset automatically sort their elements
• multiset allows duplicates, set does not
• The default sorting criterion is the relational operator <(less than); that is, the elements are arranged in ascending order
![Page 42: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/42.jpg)
![Page 43: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/43.jpg)
![Page 44: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/44.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 44
Container Adapters
• The STL provides containers to accommodate special situations called container adapters
• The three container adapters are:− Stacks
− Queues
− Priority Queues
• Container adapters do not support any type of iterator
![Page 45: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/45.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 45
Stack
• The STL provides a stack class
![Page 46: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/46.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 46
Queue
• The STL provides a queue class
![Page 47: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/47.jpg)
![Page 48: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/48.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 48
Algorithms
• Operations such as find, sort, and merge are common to all containers and are provided as generic algorithms
• STL algorithms can be classified as follows
− Nonmodifying algorithms
− Modifying algorithms
− Numeric algorithms
− Heap algorithms
![Page 49: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/49.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 49
Nonmodifying Algorithms
• Nonmodifying algorithms do not modify the elements of the container
![Page 50: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/50.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 50
Modifying Algorithms
![Page 51: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/51.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 51
Numeric Algorithms
• Numeric algorithms perform numeric calculations on the elements of a container
• Numeric algorithms:
− accumulate
− inner_product
− adjacent_difference
− partial_sum
![Page 52: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/52.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 52
Heap Algorithms
• Heap sort algorithm sorts array data
• The array containing the data is viewed as a binary tree
• Heap algorithms:
− make_heap
− push_heap
− pop_heap
− sort_heap
![Page 53: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/53.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 53
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, ()
• Predicates are special types of function objects that return Boolean values
• Predicates are typically used to specify searching or sorting criteria
![Page 54: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/54.jpg)
![Page 55: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/55.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 55
Insert Iterators
• The STL provides three iterators, called insert iterators, to insert the elements at the destination:
− back_inserter
− front_inserter
− inserter
![Page 56: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/56.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 56
STL Algorithms
• STL algorithms include documentation with the function prototypes
• The parameter types indicate for which type of container the algorithm is applicable
• fill: fills a container with elements
• fill_n: fills in the next n elements; the element that is used as a filling element is passed as a parameter
![Page 57: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/57.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 57
STL Algorithms (continued)
• generate and generate_n: generate elements and fill a sequence
• find, find_if, find_end, and find_first_of: find elements in a given range
• remove: removes certain elements from a sequence
• remove_if: removes elements from a sequence by using some criteria
![Page 58: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/58.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 58
STL Algorithms (continued)
• remove_copy, remove_copy_if : copies the elements of a sequence into another sequence by excluding certain elements of the first sequence
• swap, iter_swap, and swap_ranges: swap elements
• search, search_n, sort, and binary_search: search and sort elements, and described in the header file algorithm
![Page 59: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/59.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 59
STL Algorithms (continued)
• Function replace is used to replace all occurrences, within a given range, of a given element with a new value
• Function replace_if is used to replace the values of the elements, within a given range, satisfying certain criteria with a new value
• The function replace_copy is a combination of replace and copy
• The function replace_copy_if is a combination of replace_if and copy
![Page 60: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/60.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 60
STL Algorithms (continued)
• adjacent_find: finds the first occurrence of consecutive elements that meet criteria
• merge: merges the sorted lists. Both lists must be sorted according to the same criteria, for example, both must be in ascending order
• inplace_merge: combines sorted sequences
![Page 61: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/61.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 61
STL Algorithms (continued)
• reverse: reverses the order of the elements in a given range
• reverse_copy: reverses the elements of a given range while copying into a destination range; the source is not modified
• rotate: rotates the elements of a given range• rotate_copy: combination of rotate and copy.
Elements of the source are copied at the destination in a rotated order; the source is not modified
![Page 62: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/62.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 62
STL Algorithms (continued)
• count: counts the occurrence of a given item in a given range; returns the number of times the value specified by the parameter occurs
• count_if: counts occurrences of a given value in a given range satisfying a certain criterion
• min: determines the minimum of two values
![Page 63: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/63.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 63
STL Algorithms (continued)
• max_element: determines the largest element in a given range
• max: determines the maximum of two values• min_element: determines the smallest element
in a given range• for_each: access and process each element in
a given range by applying a function• transform: creates a sequence of elements at
the destination by applying the unary operation to each element in the range
![Page 64: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/64.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 64
STL Algorithms (continued)
• set_intersection, set_union, set_difference, and set_symmetric_difference: assume that the elements within each range are already sorted
• includes: determines whether the elements in one range appear in another range
• set_intersection: find the elements that are common to two ranges of elements
![Page 65: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/65.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 65
STL Algorithms (continued)
• set_union: find the elements that are contained in two ranges of elements
• set_difference: finds the elements in one range that do not appear in another
• set_symmetric_difference: creates a sequence of sorted elements that are in one sorted range but not in another
![Page 66: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/66.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 66
STL Algorithms (continued)
• accumulate: finds the sum of all the elements in a given range
• adjacent_difference: returns an iterator positioned one past the last element copied at the destination
• inner_product: manipulates the elements of two ranges
![Page 67: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/67.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 67
Summary
• STL consists of:
− Containers: class templates
− Iterators: step through the elements of a container
− Algorithms: manipulate the elements in a container
![Page 68: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/68.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 68
Summary
• Containers
− Sequence: vector, deque, and list
− Associative: sets, multisets, maps, and multimaps
− Container adapters: stacks, queues, and priority queues
![Page 69: C++ Programming: Program Design Including Data Structures, Second Edition](https://reader033.vdocuments.us/reader033/viewer/2022042718/56813554550346895d9cb6ff/html5/thumbnails/69.jpg)
C++ Programming: Program Design Including Data Structures, Second Edition 69
Summary
• Iterators: input, output, forward, bidirectional, and random access iterator
• Predicates: Boolean function objects
• Algorithms: nonmodifying, modifying, numerical, and heap
• Algorithms are overloaded for flexibility