Data Structures and Algorithms | C++ STLs

Data Structures and Algorithms | C++ STLs

In this article, we will be looking at a brief introduction to Data Structures and Algorithms | C++ STLs and some very important STLs like Pairs, Vectors, and Lists.

Lists

We use the header file <list> to use the functionalities of an STL list container class. The syntax for declaring a list is given below:

Syntax: list<data_type> list_name;

A list has many methods for performing different types of operations. A few of the methods are listed below:

front() – Returns the value of the first element in the list.

back() – Returns the value of the last element in the list.

push_front(i) – Adds the new element ‘i’ at the beginning of the list.

push_back(i) – Adds the new element ‘i’ at the end of the list.

pop_front()  – Removes the first element of the list, and reduces the size of the list by 1.

pop_back() – Removes the last element of the list, and reduces the size of the list by 1.

List_name.begin() – Returns an iterator pointing to the first element of the list.

List_name.end() – Returns an iterator pointing to the theoretical last element which follows the last element of the list.

List_name.rbegin() – Returns the reverse iterator pointing to the last element of the list.

List_name.rend() – Returns the reverse iterator pointing to the theoretically first element in the list which is before the actual first element of the list.

List_name.cbegin() – Returns a constant iterator pointing to the first element of the list i.e., the value pointed at cannot be changed.

See also  FIBONACCI SERIES USING RECURSION

List_name.cend()  – Returns a constant iterator pointing to the end of the list.

List_name.crbegin() – Returns a constant reverse iterator that points to the last element of the list i.e., reversed beginning of the container.

List_name.crend() – Returns a constant reverse iterator that points to the first element of the list i.e., reversed ending of the container.

empty() – Returns whether or not a list is empty. Returns true if the list is empty if not returns false.

insert(i) – inserts a new element ‘i’ into the list before the element at a specified position.

erase() – Removes a single element or a range of elements from the list.

assign(new_list) – Assigns new elements to the list replacing the current elements and resizes the list.

remove(i) – Removes all the elements from the list, which is equal to the given element ‘i’.

size() – Returns the number of elements in the list.

list_resize() – Used to resize a list container.

sort() – Sorts the list in ascending order.

list_max_size() – Returns the maximum number of elements a list container can hold.

list_unique() – Removes all duplicates consecutive element form the list.

emplace_front() – This function is used to insert a new element into the list and the element is added to the front of the list.

emplace_back() – This function is used to insert a new element into the list and the element is added to the end of the list.

clear() – Removes all the elements from the list and makes the size of the list 0

swap() – This function is used to swap the contents of one list with another list of the same data type.

See also  Collection in Java2

splice() – Used to transfer elements from one list to another.

merge() –  Used to merge two sorted lists into one.

emplace(i) – Inserts a new element at a given position in the list.

Let’s look at an example of using a list.

// CPP program to show the implementation of List
#include <iostream>
#include <iterator>
#include <list>
using namespace std;
  
// function for printing the elements in a list
void showlist(list<int> g)
{
    list<int>::iterator it;
    for (it = g.begin(); it != g.end(); ++it)
        cout << '\t' << *it;
    cout << '\n';
}
  
// Driver Code
int main()
{
  
    list<int> gqlist1, gqlist2;
  
    for (int i = 0; i < 10; ++i) {
        gqlist1.push_back(i * 2);
        gqlist2.push_front(i * 3);
    }
    cout << "\nList 1 (gqlist1) is : ";
    showlist(gqlist1);
  
    cout << "\nList 2 (gqlist2) is : ";
    showlist(gqlist2);
  
    cout << "\ngqlist1.front() : " << gqlist1.front();
    cout << "\ngqlist1.back() : " << gqlist1.back();
  
    cout << "\ngqlist1.pop_front() : ";
    gqlist1.pop_front();
    showlist(gqlist1);
  
    cout << "\ngqlist2.pop_back() : ";
    gqlist2.pop_back();
    showlist(gqlist2);
  
    cout << "\ngqlist1.reverse() : ";
    gqlist1.reverse();
    showlist(gqlist1);
  
    cout << "\ngqlist2.sort(): ";
    gqlist2.sort();
    showlist(gqlist2);
  
    return 0;
}
Output:
List 1 (gqlist1) is :     0    2    4    6    8    10    12    14    16    18
 
List 2 (gqlist2) is :     27    24    21    18    15    12    9    6    3    0
 
gqlist1.front() : 0
gqlist1.back() : 18
gqlist1.pop_front() :     2    4    6    8    10    12    14    16    18
 
gqlist2.pop_back() :     27    24    21    18    15    12    9    6    3
 
gqlist1.reverse() :     18    16    14    12    10    8    6    4    2
 
gqlist2.sort():     3    6    9    12    15    18    21    24    27

Leave a Comment

Your email address will not be published. Required fields are marked *