Standard Template Library
Total Page:16
File Type:pdf, Size:1020Kb
STANDARD TEMPLATE LIBRARY Developed By Mrs. K.M.Sanghavi STANDARD TEMPLATE LIBRARY (STL) Developed by Alexander Stepanov and Meng Lee of HP in 1979. Standard template library accepted in July 1994 into C++ ANSI Standard These are called as collection of General-purpose template classes( data structures) and functions 1 COMPONENTS OF STL Containers Algorithms Iterators 2 COMPONENTS OF STL Algorithms use iterators to interact with objects stored in containers Container Algorithm1 Algorithm 2 Object1 Object2 Iterator 1 Iterator 2 Object3 Iterator 3 Algorithm 3 3 CONTAINER Objects that hold Example : Array data (of same type) Implemented by Template Classes 4 ALGORITHM Example : These are procedures used to process the data Searching, Sorting, contained in containers. Merging, Copying, Initializing Implemented by template functions 5 ITERATOR It is an object that Used to move points to an through the element in a contents of container container They can be Connect Algorithms incremented and with Containers decremented 6 COMPONENTS OF STL Containers 7 CATEGORIES OF CONTAINERS Sequence Containers Derived Associative Containers Containers 8 CONTAINERS STL Defines 10 Containers 9 CATEGORIES OF CONTAINERS Sequence Associative Derived • vector • set • stack • deque • multiset • queue • list • map • Priority_queue • multimap 10 SEQUENCE CONTAINERS Stores elements in a linear sequence Each element is related to other elements by its position along the line They allow insertion of elements Example Element Element Element Last …….. 0 1 2 element 11 THREE TYPES OF SEQUENCE CONTAINERS vector deque list 12 Vector : Sequence Container Expandable and dynamic array Grows and shrinks in size Insertion / Deletion of elements at back Permits direct access to any element 13 Vector : Sequence Container Container Header File Iterator vector <vector> Random Access 14 vector Sequence Container Declarations ◦ vector <type> v; type: int, float, etc. Iterators ◦ vector<type>::const_iterator iterVar; const_iterator cannot modify elements ◦ vector<type>::reverse_iterator iterVar; Visits elements in reverse order (end to beginning) Use rbegin to get starting point Use rend to get ending point 15 vector Sequence Container vector functions ◦ v.push_back(value) Add element to end (found in all sequence containers). ◦ v.size() Current size of vector ◦ v.capacity() How much vector can hold before reallocating memory Reallocation doubles size ◦ vector<type> v(a, a + SIZE) Creates vector v with elements from array a up to (not including) a + SIZE 16 vector Sequence Container vector functions ◦ v.insert(iterator, value ) Inserts value before location of iterator ◦ v.insert(iterator, array , array + SIZE) Inserts array elements (up to, but not including array + SIZE) into vector ◦ v.erase( iterator ) Remove element from container ◦ v.erase( iter1, iter2 ) Remove elements starting from iter1 and up to (not including) iter2 ◦ v.clear() Erases entire container 17 vector Sequence Container vector functions operations ◦ v.front(), v.back() Return first and last element ◦ v.[elementNumber] = value; Assign value to an element 18 Vector : Sequence Container int array[5] = {12, 7, 9, 21, 13 }; vector<int> v(array,array+5); 12 7 9 21 13 v.pop_back(); v.push_back(15); 12 7 9 21 12 7 9 21 15 0 1 2 3 4 12 7 9 21 15 19 v.begin(); v[3] Vector : Sequence Container #include <vector> #include <iostream> using namespace std; void main { int arr[] = {12, 7, 9, 21, 13 }; // standard C array vector<int> v(arr, arr+5); // initialize vector with C array while ( ) // until vector is empty { cout << << ” ”; // output last element of vector // delete the last element } for(i=0; i<v.size(); ++i) cout<<v[i]<<' '; 20 cout<<endl } O/P of previous program 13 21 9 7 12 12 7 9 21 13 21 Vector : Using Iterator #include <vector> #include <iostream> using namespace std; int main() { vector <int> vec1; vector <int>::iterator vec1_Iter; vector <int>::reverse_iterator vec1_rIter; vec1.push_back(10); vec1.push_back(7); vec1.push_back(3); 22 Vector : Using Iterator cout<<"vec1 data: "; for(int i=0; i<vec1.size(); ++i) cout<<vec1[i]<<' '; cout<<endl; cout<<"\nOperation: vec1.begin()\n"; vec1_Iter = vec1.begin(); cout<<"The first element of vec1 is "<<*vec1_Iter<<endl; cout<<"\nOperation: vec1.rbegin()\n"; vec1_rIter = vec1.rbegin(); cout<<"The first element of the reversed vec1 is “; cout<<*vec1_rIter<<endl; return 0; 23 } O/P of previous program vec1 data: 10 7 3 Operation: vec1.begin() The first element of vec1 is10 Operation: vec1.rbegin() The first element of the reversed vec1 is : 3 24 .