in reality, the standard template library (STL ) is a collection of C++ template classes for data structures and algorithms
in brief, It is impossible to learn c++ (STL) without proper working knowledge of data structure and algorithms
without a doubt, a novice has to learn first DSA and algorithms to study STL in C++
During competitive programming time is a valuable asset at this instant,
it is important to realize, you can use STL to overcome the problem of writing function again and again
thus, STL library has three components
- Algorithm’s
- Container’s
- Iterator’s
Algorithms
in a word, there are build in algorithms available in STL C++
such as: sort(); set_union(); binary_search(); sort_heap(); push_heap(); pop_heap(); make_heap(); merge_heap(); reverse(); copy();
Example of a sort algorithm in STL
#include <iostream> #include <algorithm> using namespace std; void show(int A[]) { for(int i = 0; i < 8; i++) cout << A[i] << " "; } int main() { int A[8]= {1, 5, 6, 7, 3, 4, 2, 0}; sort(A, A+8);//sort algorithm show(A); return 0; }
Output
0 1 2 3 4 5 6 7
Iterator’s
on the positive side, Iterator’s are available in every collection
First method
vector<int>:: iterator itr; for(itr=v.begin();itr!=v.end();itr++) cout<<*itr<<endl;
Second method
for(int x:v) cout<<x<<endl;
Container’s class’s
such as : vector, forward_list, list,
deque,priority_queue, stack,
set, multiset
Vector class contain a different types of member functions
that is : push_back(), pop_back(), insert(), remove(), size(), empty()
#include <iostream> #include <vector> using namespace std; int main() { //Vector of type integer //V is an object and it is initialized with 1,2,3,4,5 vector<int> v ={1,2,3,4,5}; v.push_back(6); //Push_back member function of vector class v.push_back(7); //iterator class belong to a vector class //itr is an object of iterator vector<int>::iterator itr; cout<<"First iterator method" << endl; for(itr=v.begin();itr!=v.end();itr++) //First iterator method cout<<*itr<<endl; cout<<"Second iterator by each loop method"<<endl; for(int x:v)//Second iterator by each loop method cout <<x<<endl; return 0; }
Output
First iterator method 1 2 3 4 5 6 7 Second iterator by each loop method 1 2 3 4 5 6 7
vector class
#include <iostream> #include <vector> using namespace std; int main() { vector<int> v={1,2,3,4,5,6,7}; v.push_back(8); v.push_back(9); for(int x:v) cout<<x<<endl; return 0; }
Output
1 2 3 4 5 6 7 8 9
vector member function’s
string class
that is to say, in C++ you declare string as
string str;
for instance, in C you declare string as
char str[40];
The operators that you can use on a string
Using assignment(=), concatenation(+), insertion(>>), extraction (>>) operators
#include <iostream> #include<string> using namespace std; int main() { string s; //string class with object S s ="hi "; // assignment(=) operator string s1=" there"; string s2; s2 = s+s1; // concatenation(+) operator cout << s2; // insertion (>>) operator return 0; }
Output
hi there
Using Concatenation assignment (+=) operator on a string
#include <iostream> #include<string> using namespace std; int main() { string s; //string class with object S s ="hi "; // assignment(=) operator s+="there"; //Concatenation assignment (+=) operator cout << s; // insertion (>>) operator return 0; }
Output
hi there
Using sub scripting [] operator on a string
#include <iostream> #include <string> using namespace std; int main () { string s ("hi there"); for (int i=0; i<s.length(); i++) { cout << s[i]; // [] sub scripting operator } return 0; }
Output
hi there
Using inequality(!=) operator on a string
#include <iostream> #include <string> using namespace std; int main() { string s1("hi_there"); // string object s1 string s2("hi_there"); // string object s2 if(s1 != s2) // inequality operator(!=) cout<<"s1 and s2 are not equal."<<endl; else cout<<"s1 and s2 are equal."<<endl; return 0; }
Output
s1 and s2 are equal
Using equality(==) operator on a string
#include <iostream> #include <string> using namespace std; int main() { string s1("hi_there"); string s2("hi_there_people"); if(s1 == s2) cout<<"s1 and s2 are equal."<<endl; else cout<<"s1 and s2 are not equal."<<endl; return 0; }
Output
s1 and s2 are not equal
Using Greater than (>) operator on a string
#include <iostream> #include <string> using namespace std; int main() { string s1("hi_there"); string s2("hi_there_people"); if(s1 > s2) cout<<"s1 is greater than s2 "<<endl; else cout<<"s1 is less than s2 "<<endl; return 0; }
Output
s1 is less than s2
Using less than (<) operator on a string
#include <iostream> #include <string> using namespace std; int main() { string s1("hi_there"); string s2("hi_there_people"); if(s1 < s2) cout<<"s1 is greater than s2 "<<endl; else cout<<"s1 is less than s2 "<<endl; return 0; }
Output
s1 is greater than s2
String member functions
Assign() function
#include <iostream> #include <string> using namespace std; int main() { string s; //String with object s s.assign("hi_there");//You can also directly assign by s1 = ?hi_there?; cout<<s; return 0; }
Output
hi_there
append() function
#include <iostream> #include <string> using namespace std; int main() { string s= "hi_there"; s.append("people"); //You can also use s+= ?people?; cout<<s; return 0; }
Output
hi_there people
insert( )function
Syntax
string object.insert(pos, value)
#include <iostream> #include <string> using namespace std; int main() { string obj= "hi_people"; obj.insert(2,"_there"); cout<<obj; return 0; }
Output
hi_there_people
replace() function
syntax
string object .replace(pos, length,value)
#include <iostream> #include <string> using namespace std; int main() { string obj= "hi_people"; obj.replace(2,7,"_there"); cout<<obj; return 0; }
Output
hi_there
erase() function
#include <iostream> #include <string> using namespace std; int main() { string obj= "hi_people"; obj.erase(); cout<<obj; return 0; }
Output
find() function
#include <iostream> #include <string> using namespace std; int main() { string obj= "hi_there_people"; int i =obj.find("there"); cout<<i; return 0; }
returns
index value of given text
Output
3
size() function
#include <iostream> #include <string> using namespace std; int main() { string obj= "hi_there_people"; int i =obj.size(); cout<<i; return 0; }
Output
15
at() function
#include <iostream> #include <string> using namespace std; int main() { string obj= "hi_there_people"; cout<<obj.at(4); return 0; }
Output
h
data() function
#include <iostream> #include <string> using namespace std; int main() { string s1 = "hi_there"; cout<<s1.data(); return 0; }
Output
hi_there
find_first_of() function
#include<iostream> using namespace std; int main() { string obj = "hi_there_people"; cout << obj.find_first_of('t'); return 0; }
return
gives the position of the first occurrence of a given letter from the string
Output
3
find_last_of() function
#include<iostream> using namespace std; int main() { string obj = "hi_there_people"; cout << obj.find_last_of('h'); return 0; }
return
gives the position of the last occurrence of a given letter from the string
Output
14
c_str() function
c_str() function convert c++style string into c style string
c_str returns a const char* (which is a C style string)
#include <iostream> #include <string.h> using namespace std; int main() { string s1="hello"; cout<<s1.c_str(); }
Output
hello
convert c++style string into c style string without c_str() function
#include <iostream> #include <string.h> using namespace std; int main() { string s1="hello"; // c++ string char str[30]; // c string strcpy(str,s1); //convert c++ string(s1) to C string(str) cout<<str; }
Output
Error : cannot convert std::string to basic_string<char>
convert c++style string into c style string with c_str() function
#include <iostream> #include <string.h> using namespace std; int main() { string s1="hello"; // c++ string char str[30]; // c string strcpy(str,s1.c_str()); //convert c++ string(s1) to C string(str) cout<<str; }
Output
hello
List class
Syntax
Here one, two, and three are the list objects
#include <iostream> #include <list> using namespace std; int main() { list<int> v={1,2,3,4,5,6,7}; v.push_back(8); v.push_back(9); for(int x:v) cout<<x<<endl; return 0; }
Output
1 2 3 4 5 6 7 8 9
NOTE: you can use other container class by including header file and declaring its class
every container class have a different member functions
for an instant, forward_list class won’t have push_back member function, it has push_front member function
Leave a Reply