
- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <multimap>
- C++ Library - <queue>
- C++ Library - <priority_queue>
- C++ Library - <set>
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- The C++ Advanced Library
- C++ Library - <any>
- C++ Library - <barrier>
- C++ Library - <bit>
- C++ Library - <chrono>
- C++ Library - <cinttypes>
- C++ Library - <clocale>
- C++ Library - <condition_variable>
- C++ Library - <coroutine>
- C++ Library - <cstdlib>
- C++ Library - <cstring>
- C++ Library - <cuchar>
- C++ Library - <charconv>
- C++ Library - <cfenv>
- C++ Library - <cmath>
- C++ Library - <ccomplex>
- C++ Library - <expected>
- C++ Library - <format>
- C++ Library - <future>
- C++ Library - <flat_set>
- C++ Library - <flat_map>
- C++ Library - <filesystem>
- C++ Library - <generator>
- C++ Library - <initializer_list>
- C++ Library - <latch>
- C++ Library - <memory_resource>
- C++ Library - <mutex>
- C++ Library - <mdspan>
- C++ Library - <optional>
- C++ Library - <print>
- C++ Library - <ratio>
- C++ Library - <scoped_allocator>
- C++ Library - <semaphore>
- C++ Library - <source_location>
- C++ Library - <span>
- C++ Library - <spanstream>
- C++ Library - <stacktrace>
- C++ Library - <stop_token>
- C++ Library - <syncstream>
- C++ Library - <system_error>
- C++ Library - <string_view>
- C++ Library - <stdatomic>
- C++ Library - <variant>
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
C++ Library - <forward_list>
Introduction
forward_list is a popularly used sequence container. Container is an object that holds data of same type. forward_list container is implemented as singly linked-list, hence it provides unidirectional sequential access to it's data.
forward_list doesn't provide fast random access, it only supports sequential access in only one directions. forward_list allows insertion and deletion operation anywhere within a sequence in constant time.
Elements of forward_list can be scattered in different chunks of memory. Container stores necessary information to allow sequential access to it's data. forward_lists can shrink or expand as needed from both ends at run time. The storage requirement is fulfilled automatically by internal allocator.
Zero sized forward_lists are also valid. In that case forward_list.begin() and forward_list.end() points to same location. But behavior of calling front() is undefined.
Definition
Below is definition of std::forward_list from <forward_list> header file
template < class T, class Alloc = allocator<T> > class forward_list;
Parameters
-
T − Type of the element contained.
T may be substituted by any other data type including user-defined type.
-
Alloc − Type of allocator object.
By default, the allocator class template is used, which defines the simplest memory allocation model and is value-independent.
Member types
Following member types can be used as parameters or return type by member functions.
Sr.No. | Member types | Definition |
---|---|---|
1 | value_type | T (First parameter of the template) |
2 | allocator_type | Alloc (Second parameter of the template) |
3 | reference | value_type& |
4 | const_reference | const value_type& |
5 | pointer | value_type* |
6 | const_pointer | const value_type* |
7 | iterator | a random access iterator to value_type |
8 | const_iterator | a random access iterator to const value_type |
9 | size_type | size_t |
10 | difference_type | ptrdiff_t |
Functions from <forward_list>
Below is list of all methods from <forward_list> header.
Constructors
Sr.No. | Method & Description |
---|---|
1 |
forward_list::forward_list default constructor
Constructs an empty forward_list with zero elements. |
2 |
forward_list::forward_list fill constructor
Constructs a new forward_list with n elements and assigns val to each element of forward_list. |
3 |
forward_list::forward_list fill constructor
Constructs a new forward_list with n elements and assign zero value to each element of forward_list. |
4 |
forward_list::forward_list range constructor
Constructs a forward_list with as many elements as in range of first to last. |
5 |
forward_list::forward_list copy constructor
Constructs a forward_list with copy of each elements present in existing list. |
6 |
forward_list::forward_list move constructor
Constructs a forward_list with the contents of other using move semantics. |
7 |
forward_list::forward_list initializer list constructor Constructs a forward_list from initialize list. |
Destructor
Sr.No. | Method & Description |
---|---|
1 |
forward_list::~forward_list
Destroys forward_list object by deallocating it's memory. |
Member functions
Sr.No. | Method & Description |
---|---|
1 |
forward_list::assign range version
Assigns new value to forward_list by replacing old ones. |
2 |
forward_list::assign fill version
Assigns new values to forward_list by replacing old ones. |
3 |
forward_list::assign initializer list version
Assigns new values to forward_list by replacing old ones. |
4 |
forward_list::before_begin
Returns a random access iterator which points to the position before the first element of the forward_list. |
5 |
forward_list::begin
Returns a random access iterator which points to the first element of the forward_list. |
6 |
forward_list::cbefore_begin
Returns a constant random access iterator which points to the position before the first element of the forward_list. |
7 |
forward_list::cbegin
Returns a constant random access iterator which points to the beginning of the forward_list. |
8 |
forward_list::cend
Returns a constant random access iterator which points to the end of the forward_list. |
9 |
forward_list::clear
Destroys the forward_list by removing all elements from the forward_list and sets size of forward_list to zero. |
10 |
forward_list::emplace_after
Constructs and inserts new element after position in the forward_list and increases size of forward_list by one. |
11 |
forward_list::emplace_front
Inserts new element at the beginning of the forward_list and increases size of forward_list by one. |
12 |
forward_list::empty
Tests whether forward_list is empty or not. |
13 |
forward_list::end
Returns a random access iterator which points to the last element of the forward_list. |
14 |
forward_list::erase_after position version
Removes single element after position from the the forward_list. |
15 |
forward_list::erase range version
Removes range of element from the the forward_list. |
16 |
forward_list::front
Returns a reference to the first element of the forward_list. |
17 |
forward_list::get_allocator
Returns an allocator associated with forward_list |
18 |
forward_list::insert_after single element version
Extends iterator by inserting new element after position in forward_list |
19 |
forward_list::insert_after move version
Extends iterator by inserting new element after position in forward_list |
20 |
forward_list::insert_after fill version
Extends iterator by inserting new element after position in forward_list |
21 |
forward_list::insert_after range version
Extends iterator by inserting new element after position in forward_list |
22 |
forward_list::insert_after initializer list version
Extends iterator by inserting new element after position in forward_list |
23 |
forward_list::max_size
Returns the maximum number of elements can be held by forward_list. |
24 |
forward_list::merge
Merges two sorted forward_lists into one. |
25 |
forward_list::merge move version
Merges two sorted forward_lists into one. |
26 |
forward_list::merge compare function
Merges two sorted forward_lists into one. |
27 |
forward_list::merge compare function move version
Merges two sorted forward_lists into one by using move semantics. |
28 |
forward_list::operator= copy version Assigns new contents to the forward_list by replacing old ones. |
29 |
forward_list::operator= move version
Assign new contents to the forward_list by replacing old ones. |
30 |
forward_list::operator= initializer list version
Assign new contents to the forward_list by replacing old ones. |
31 |
forward_list::pop_front
Removes first element from forward_list. |
32 |
forward_list::push_front copy version
Inserts new element at the beginning of forward_list. |
33 |
forward_list::push_front move version
Inserts new element at the beginning of forward_list. |
34 |
forward_list::remove
removes element(s) from the forward_list that matches the value. |
35 |
forward_list::remove_if
removes elements from the forward_list that fulfills the condition. |
36 |
forward_list::resize
Changes the size of forward_list. |
37 |
forward_list::resize value version
Changes the size of forward_list. |
38 |
forward_list::reverse
Reverses the order of the elements present in the forward_list. |
39 |
forward_list::sort
Sorts the elements of the forward_list. |
40 |
forward_list::sort compare function
Sorts the elements of the forward_list. |
41 |
forward_list::splice_after
Transfers all elements from forward_list to *this. |
42 |
forward_list::splice_after move version
Transfers all elements from forward_list x to *this by using move semantics. |
43 |
forward_list::splice_after single element
Transfers a element pointed to by iterator i from forward_list x into *this. |
44 |
forward_list::splice_after single element move version
Transfers the element pointed to by iterator i from forward_list x into *this by using move semantics. |
45 |
forward_list::splice_after range version
Transfers the elements in the range of first to last from x to *this. |
46 |
forward_list::splice range and move version
Transfers the elements in the range of first to last from x to *this by using move semantics. |
47 |
forward_list::swap
Exchanges the content of a forward_list with contents of another forward_list x. |
48 |
forward_list::unique
Removes all consecutive duplicate elements from the forward_list. |
49 |
forward_list::unique
Removes all consecutive duplicate elements from the forward_list. |
Non-member overloaded functions
Sr.No. | Method & Description |
---|---|
1 |
operator==
Tests whether two forward_lists are equal or not. |
2 |
operator!=
Tests whether two forward_lists are equal or not. |
3 |
operator<
Tests whether first forward_list is less than other or not. |
4 |
operator<=
Tests whether first forward_list is less than or equal to other or not. |
5 |
operator>
Tests whether first forward_list is greater than other or not. |
6 |
operator>=
Tests whether first forward_list is greater than or equal to other or not. |
7 |
swap
Exchanges the contents of two forward_list. |