Updated March 27, 2023
Introduction to C++ Standard Template Library
Standard Template Library in C++ is a combination of a set of all the standard predefined template classes which includes and makes use of all the mandatory data structures and functions like a stack, array, list, queue, etc. It includes all the necessary components required at the time of compilation. It basically acts as a library of classes, containers, packages, algorithms, and iterators. It is a kind of blueprint and a generalized class which contains all the parametrized components. For working with the standard template library, it is very much needed to work with the components and features of template classes.
Why do we need C++ Standard Template Library?
There are numerous needs for the C++ standard template library. We can take into consideration all the factors such as:
- Automatic Management of Memory: Possible using arrays which is a part of the container component of the Standard template library.
- Quality Usage and Optimization: C++ standard template comprises certain pre-defined functions such as arrays, stacks and queues, and lists which can be used anytime once called.
- Reusability: Using an already used concept or idea is not a bad idea, it makes use of all the standard schemas which are already tested and defined.
- Less Extra Efforts: Easy to use and understand only the knowledge and where to use them plays a more important role than anything else.
Components of C++ Standard Template Libraries
Standard Template Libraries contain template libraries which in turn makes use of some important components which cannot be ignored. These are kind of predefined functions which makes use of essential components:
- Algorithms
- Containers
- Iterators
- Functions
1. Algorithms
Algorithms are the set of instructions or kind of pseudocode which is used to get the blueprint of the flow of execution of programs. But in the case of Standard Templates of C++, these algorithms are pre-defined in the header algorithm which defines a collection of functions designed to make use of elements that are present within the container and gives the ability to perform different types of operations for the contents or elements of the container.
Sorting: Sorting is a kind of very common function used by any data residing within the container. It makes use of a built-in function that works in a fashion to make the data arranged in increasing or decreasing fashion. It makes use of a function called sort ().
Binary Search: Searching is a task used to find for the desired element. It is very much needed to perform a sorting before any searching is applied.
Algorithm: Within the standard template, the library plays a very important role in the sense it makes use of certain very important algorithms on vectors like:
- Sort (1st_iterator, last_iterator): Used for sorting any given vector.
- Reverse (1st _iterator, last_iterator): Used for reversing a vector.
- Max_element: Used for finding a maximum element of any vector.
- Min_element: Used for finding a minimum element of any vector.
- Accumulate: For getting the summation of any vector.
2. Containers
Containers, as its name suggests, make use of classes within the container to store various objects and data. Containers in STL are structured in a way that has a total of seven standards “first-class” container as classes and a total of three container adaptor classes, seven header files that provide access to these container classes and containers adopters.
- To implement the data structures that are accessible in a sequential manner a sequence container is used which includes vector, list, arrays, deque, forward list.
- To provide versatility to any interface for the above sequential containers, a container adopter is used. It makes use of queue, priority queue and stack.
- To search the data structures that can be quickly searched with the complexity of searching which includes associative containers and makes use of data structures such as set, map, multimap, and multiset.
3. Iterators
Unlike other standard libraries in C++ iterators are used to make the functions or the data structure generic and provides ease. It is used for working on a sequence of values.
4. Functions
Functions include that can overload any function with call operator. Such types of classes have special instances which are called as function objects. Another name for it is Functors which makes the working of associated function as customized with the help of all parameters for passing. Therefore, functors are used as a parameter for passing to the function.
Examples of C++ Standard Template Library
Given below are the examples of C++ Standard Template Library:
Example #1
Program to make use of the standard library for the function of the unordered set.
Code:
#include <bits/stdc++.h>
using namespace std;
int main ()
{
unordered_set <string> stringSet;
stringSet.insert("It");
stringSet.insert("is");
stringSet.insert("deadly");
stringSet.insert("sleepy");
stringSet.insert("in night");
string key = "steady";
if (stringSet.find(key) == stringSet.end ())
cout << key << " not able to found" << endl << endl;
else
cout << "able to Find " << key << endl << endl;
key = "c++";
if (stringSet.find(key) == stringSet.end ())
cout << key << " not able to find\n";
else
cout << "able_to_find" << key << endl;
cout << "\nAll the elements:";
unordered_set<string>:: iterator itr;
for (itr = stringSet.begin(); itr != stringSet.end(); itr++)
cout << (*itr) << endl;
}
Output:
Example #2
Program to illustrate capacity function in vector.
Code:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> g1;
for (int a = 1; a <= 5; a++)
g1.push_back(a);
cout << "Total Size: " << g1.size();
cout << "\nTotalCapacity: " << g1.capacity();
cout << "\nMax_Size: " << g1.max_size ();
g1.resize(6);
cout << "\nSize: " << g1. size();
if (g1.empty() == false)
cout << "\nEmpty Vector";
else
cout << "\nVector is not empty";
g1. shrink_to_fit ();
cout << "\nAll Vector elements are: ";
for(auto it = g1.begin(); it != g1.end(); it++)
cout << *it << " ";
return 0;
}
Output:
Advantages of C++ Standard Template Library
- Reusability: Structured, defined and standard code with predefined headers can be used without any prior knowledge of algorithms and implementation.
- Reduced Complexity: It eases the overall flow of the complexity which sometimes occurs of not using pre-defined or inbuild function as it makes use of some unusual components.
- Versatility and Flexibility: It will provide versatility and flexibility to the overall code which is in execution mode.
- Predefined Functions: All algorithms and data structures are pre-defined with no need of any external use of the algorithms or data structures.
Conclusion
Using the standard template in C++ not only improves the overall functioning and provides flexibility to the code but also involves pre-defined structures and functions which are not needed to be self-written and can be declared initially which is linked with the template class or container.
Recommended Articles
This is a guide to the C++ Standard Template Library. Here we discuss the introduction, components, advantages and examples of C++ Standard Template Libraries. You may also have a look at the following articles to learn more –