0% found this document useful (0 votes)
30 views12 pages

List STL

Lists in C++ STL allow non-contiguous memory allocation and insertion/deletion of elements is quick. A std::list is used to implement lists and defined in the <list> header. Basic operations on lists include accessing the front/back, inserting/deleting elements, and traversing the list.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views12 pages

List STL

Lists in C++ STL allow non-contiguous memory allocation and insertion/deletion of elements is quick. A std::list is used to implement lists and defined in the <list> header. Basic operations on lists include accessing the front/back, inserting/deleting elements, and traversing the list.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 12

List in C++ Standard Template Library (STL)


Lists are sequence containers that allow non-contiguous memory allocation.
As compared to the vector, the list has slow traversal, but once a position
has been found, insertion and deletion are quick (constant time). Normally,
when we say a List, we talk about a doubly linked list. For implementing a
singly linked list, we use a forward_list.
std::list is the class of the List container. It is the part of C++ Standard Tem-
plate Library (STL) and is defined inside <list> header file.

Syntax:
std::list <data-type> name_of_list;
Example:
// C++ program to demonstrate the use of list containers
#include <iostream>
#include <list>
using namespace std;

int main()
{
// defining list
list<int> gqlist{12,45,8,6};

for (auto i : gqlist) {


cout << i << ' ';
}
return 0;
}

Output
12 45 8 6
In the above example, we created a std::list object named gqlist and initial-
ized it using an initializer_list. We can initialize the std::list objects using
many different ways mentioned here.

Some Basic Operations on std::list


• front() – Returns the value of the first element in the list.
• back() – Returns the value of the last element in the list.
• push_front() – Adds a new element ‘g’ at the beginning of the list.
• push_back() – Adds a new element ‘g’ 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.
• insert() – Inserts new elements in the list before the element at a speci-
fied position.
• size() – Returns the number of elements in the list.
• begin() – begin() function returns an iterator pointing to the first element
of the list.
• end() – end() function returns an iterator pointing to the theoretical last el-
ement which follows the last element.
The below example demonstrates the general use of list containers and their
basic functions in C++.
Example:

// C++ program to demonstrate 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;
}

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
The above example only demonstrates the general usage of the std::list and
its member functions. The below table provides all the member functions of
std::list class and links to their detailed explanation.

std::list Member Functions


Functions Definition

Returns the value of the first element


front()
in the list.

Returns the value of the last element


back()
in the list.

Adds a new element ‘g’ at the begin-


push_front(g)
ning of the list.

push_back(g) Adds a new element ‘g’ at the end of the list.

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

Removes the last element of the list, and reduces the


pop_back()
size of the list by 1.

begin() function returns an iterator pointing to the first


list::begin()
element of the list.

end() function returns an iterator pointing to the theo-


list::end()
retical last element which follows the last element.

rbegin() returns a reverse iterator which points to the


last element of the list. rend() returns a reverse itera-
list rbegin() and rend()
tor that points to the position before the beginning of
the list.

cbegin() returns a constant random access iterator


which points to the beginning of the list. cend() re-
list cbegin() and cend()
turns a constant random access iterator which points
to the end of the list.

list crbegin() and crend() crbegin() returns a constant reverse iterator which
points to the last element of the list i.e reversed be-
ginning of the container. crend() returns a constant re-
verse iterator which points to the theoretical element
preceding the first element in the list i.e. the reverse
end of the list.

empty() Returns whether the list is empty(1) or not(0).

Inserts new elements in the list before the element at


insert()
a specified position.

Removes a single element or a range of elements from


erase()
the list.

Assigns new elements to the list by replacing current


assign()
elements and resizing the list.

Removes all the elements from the list, which are


remove()
equal to a given element.

Used to remove all the values from the list that corre-
list::remove_if() spond true to the predicate or condition given as a pa-
rameter to the function.

reverse() Reverses the list.


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

list resize() Used to resize a list container.

sort() Sorts the list in increasing order.

Returns the maximum number of elements a list con-


list max_size()
tainer can hold.

Removes all duplicate consecutive elements from the


list unique()
list.

.emplace_front() function is used to insert a new ele-


ment into the list container and constructs the object
in-place at the beginning of the list.
list::emplace_front() and list::emplace_back()
. emplace_back() function is used to insert a new ele-
ment into the list container,and constructs the object
in-place at the end of the list.

clear() function is used to remove all the elements of


list::clear()
the list container, thus making it size 0.

list::operator= This operator is used to assign new contents to the


container by replacing the existing contents.

This function is used to swap the contents of one list


list::swap()
with another list of the same type and size.

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

list merge() Merges two sorted lists into one.

Extends the list by inserting a new element at a given


position and it constructs the object in-place at the
list emplace()
beginning of the list, potentially improving perfor-
mance by avoiding a copy operation

Points to Remember about List Container


• It is generally implemented using a dynamic doubly linked list with traver-
sal in both directions.
• Faster insert and delete operation as compared to arrays and vectors.
• It provides only sequential access. Random Access to any middle element
is not possible
• It is defined as a template so it is able to hold any data type.
• It operates as an unsorted list would, which implies that by default, the
list’s order is not preserved. However, there are techniques for sorting.

You might also like