Open In App

Difference Between Forward List and List in C++

Improve
Improve
Like Article
Like
Save
Share
Report

Forward List is a sequence container that allows unidirectional sequential access to its data. It contains data of the same type. In STL, it has been implemented using Singly Linked List, which requires constant time for insertion and deletion. Elements of the forward list are scattered in the memory and the ordering is maintained by associating every element of the list by the next element of the list via a link. Thus, it makes efficient use of memory. It has been introduced from the C++11 version.

Implementation of Forward List: 

C++




// CPP Program to demonstrate forward list
#include <bits/stdc++.h>
using namespace std;
 
// Driver Code
int main()
{
    // Declaring forward list
    forward_list<int> flist1;
 
    // Assigning values using assign()
    flist1.assign({ 10, 12, 13, 15 });
 
    // Displaying forward list
    cout << "The elements of forward list are : ";
    for (auto a : flist1)
        cout << a << " ";
    return 0;
}


Output: 

The elements of forward list are : 10 12 13 15

 

List is also a sequence container that allows bidirectional sequential access to its data. It contains data of the same type. In STL, it has been implemented using Doubly Linked List and it requires constant time for insertion and deletion. It allows non-contiguous memory allocation. Each element of the list is associated with a link to the element following it and preceding it. It is extensively used in sorting algorithm because of its constant insertion and deletion time and bidirectional sequential access.

Implementation of List:  

C++




// CPP Program to demonstrate list
#include <bits/stdc++.h>
using namespace std;
 
// Driver Code
int main()
{
    // Declaring a list
    list<int> list1;
 
    // Assigning values using assign()
    list1.assign({ 1, 2, 10, 15 });
 
    // Displaying list
    cout << "The elements of list are : ";
    for (auto a : list1)
        cout << a << " ";
    return 0;
}


Output: 

The elements of list are : 1 2 10 15

 

Difference Between Forward List and List

Forward List

List

Implemented using Singly Linked List Implemented using Doubly Linked List
Consumes relatively less memory Consumes relatively more memory
Less overhead in insertion and removal elements due to less pointer per node, thus it gives better performance. More overhead in insertion and removal elements due to more pointer per node, thus it gives poor performance.
Sequential access in forward direction Sequential access in both forward and reverse direction
More efficient than list. Less efficient than forward list.
Generally used when unidirectional sequential access is needed like for implementing binary tree, hash table, stack, etc. Generally used when bidirectional sequential access is needed like for implementing chaining in hashing, adjacency list representation of graph, etc.


Last Updated : 29 Sep, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads