Download presentation
Presentation is loading. Please wait.
1
priority_queue<T>
More on the C++ STL vector<T> list<T> stack<T> queue<T> priority_queue<T>
2
STL Container Classes Sequence containers organize items by position: 1st, 2nd, 3rd, …., last vector, list, deque Adapter containers are restricted versions of other containers stack, queue, priority_queue Associative containers organize items based on a key value set, map, multiset, multimap
3
vector<T> vs. list<T>
can expand to hold as many items as needed O(1) insert/delete at end of the list O(n) insert/delete at position i in the list indexing (vec[i]) gives gives O(1) access to any position list<T> can expand to hold as many items as needed O(1) delete of any item O(1) insert before any item no indexing – cannot access item at position i in O(1)
4
Use different storage structures
vector<T> items stored in an array (contiguous storage) 1 2 3 4 5 6 7 8 9 10 11 list<T> items stored in a linked list (non-contiguous storage) 1 2 3 4 5 6 7 8
5
Partial list<T> API
list() //construct an empty list push_back(item) //add item at end of list pop_back() //remove item at end of list push_front(item) //add item at front of list pop_front() //remove item at front of list size() //return number of items in list back() //return item at end of list front() //return item at front of list
6
STL iterators an iterator is a generalization of a pointer
used to access an element in the container each STL container class has a nested iterator class associated with it vector<T>::iterator list<T>::iterator STL container classes have methods which return iterators begin() //returns an iterator accessing first element end() //returns an iterator that is past the last //element
7
iterator operations iter++ //access next element
iter //access prior element == and != //compare 2 iterators *iter //dereference the iterator
8
An Example list<int> myList; // store some items in myList
list<int>::iterator iter; iter = myList.begin(); while (iter != myList.end()) { //process *iter iter++; }
9
STL Components Container classes - templates for classes which hold a collection of elements Algorithms - templates for functions which operate on a range of elements from a container range is specified by iterators Iterators give access to the element in a container allow for movement from one element to another Container Classes Algorithms Iterators
10
STL Algorithms designed to operate on a sequence of elements rather than on a specific container the sequence is designated by two iterators all container classes have the following two methods begin( ) returns an iterator positioned at the container's first element end( ) returns an iterator positioned past the container's last element (past-the-end) C.begin( ), C.end( ) specifies a sequence which contains all elements of the container C
11
STL Algorithms some examples of STL algorithms
find(iter1, iter2, value) //returns an iterator max_element(iter1, iter2) //returns an iterator sort(iter1, iter2) //sorts using < for_each(iter1, iter2, F) //applies F to every //item see STL Programmer's Guide link on home page
12
Using iterators #include <iostream> #include <vector>
#include <algorithm> #include <cstdlib> using namespace std; void set(int & val); void display(int val); void main( ) { vector<int> A(5); for_each(A.begin( ), A.end( ), set); // will not work w/ vector<int> A; for_each(A.begin( ), A.end( ), display); cout << endl; sort(A.begin( ), A.end( )); // operator< must be defined for A's element type } void set(int & val) { val = rand( ); } void display(int val) { cout << " " << val; }
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.