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 .
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages25 Page
-
File Size-