Download presentation
Presentation is loading. Please wait.
1
More on the STL vector list stack queue priority_queue
2
STL Container Classes Sequence containers organize items by position: 1 st, 2 nd, 3 rd, …., 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 vs. list vector 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 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 items stored in an array (contiguous storage) 0 list items stored in a linked list (non-contiguous storage) 123 456 7 8 0 1 2 3 45 6 7 8 910 11
5
Partial list 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 ::iterator list ::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 myList; // store some items in myList list ::iterator iter; iter = myList.begin(); while (iter != myList.end()) { //process *iter iter++; }
9
STL Components Container ClassesAlgorithms Iterators 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
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
#include using namespace std; void set(int & val); void display(int val); int main( ) { vector A(5); for_each(A.begin( ), A.end( ), set); // would not work if vector A; used for_each(A.begin( ), A.end( ), display); cout << endl; sort(A.begin( ), A.end( )); // operator< must be defined for A's element type for_each(A.begin( ), A.end( ), display); cout << endl; return 0; } void set(int & val) { val = rand( ); } void display(int val) { cout << " " << val; } 41 18467 6334 26500 19169 41 6334 18467 19169 26500 Press any key to continue
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.